Просто, чтобы дать общий ответ здесь обо всех трех API MYSQL со ссылкой:
Вы не можете смешивать ни одно из трех ( mysql_*
, mysqli_*
, PDO
) API MYSQL от PHP вместе, он просто не работает. Это даже в справочнике FAQ :
Невозможно смешать расширения. Например, передача mysqli в PDO_MySQL или ext / mysql не будет работать.
blockquote>Вам нужно использовать тот же API MySQL и связанные с ним функции, от подключения к запросам .
Да, вы можете включить заголовки C в код C ++. Это нормально, чтобы добавить это:
#ifdef __cplusplus
extern "C"
{
#endif
// C header here
#ifdef __cplusplus
}
#endif
, чтобы компилятор C ++ знал, что объявления функций и т. Д. Должны рассматриваться как C, а не C ++.
Если вы компилируете код C вместе, как часть вашего проекта, с кодом на C ++, вам просто нужно включить заголовочные файлы, как обычно, и использовать режим компиляции C ++ для компиляции кода, однако некоторые C-код не будет компилироваться с использованием компилятора C ++ (например, использование функции malloc
требует кастинга).
Если включено, с другой стороны, у вас есть библиотека или какой-либо другой код, который не является частью вашего проекта, тогда вам нужно убедиться, что заголовки отмечены как extern "C"
, иначе именование C ++ будет применяться соглашение для скомпилированных имен функций, которое не будет соответствовать соглашению об именах, используемому компилятором C.
Здесь есть два варианта: вы сами редактируете сам файл заголовка, добавляете
#ifdef __cplusplus
extern "C" {
#endif
... original content of headerfile goes here.
#ifdef __cplusplus
}
#endif
Или, если у вас нет возможности редактировать эти заголовки, вы можете использовать эта форма:
#ifdef __cplusplus
extern "C" {
#endif
#include <c_header.h>"
#ifdef __cplusplus
}
#endif
Да, но вам нужно сообщить компилятору C ++, что объявления из заголовка C:
extern "C" {
#include "c-header.h"
}
. Многие заголовки C уже включены, завернуты в #if defined __cplusplus
. Это, возможно, немного странно (синтаксис C ++ в заголовке C), но это часто делается для удобства.