Кто-нибудь может сказать мне, где я здесь ошибаюсь? Я использую C ++ Bulder 10.2 (компилятор clang). В меню IDE я выбрал File | New | Dynami c Link Library и выбрал компилировать как C без зависимостей. Затем я добавил sqliteFcts. c и создал библиотеку sqliteFcts.dll. Все компилируется нормально.
Содержимое sqliteFcts. c.
#include <sqlite3ext.h>
SQLITE_EXTENSION_INIT1
#ifdef _WIN32
__declspec(dllexport)
#endif
int sqlite3_sqliteFcts_init(
sqlite3 *db,
char **pzErrMsg,
const sqlite3_api_routines *pApi
){
int rc = SQLITE_OK;
SQLITE_EXTENSION_INIT2(pApi);
return rc;
}
// My code is above. Code below was created by the IDE
#pragma argsused
int _libmain(unsigned long reason)
{
return 1;
}
Из своего собственного приложения я пытаюсь использовать dll со следующим кодом
int rc;
sqlite3_db_config(db,SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION,1,&rc);
rc=sqlite3_load_extension(db,"C:/temp/sqliteFcts.dll",0,&buf);
Я получаю сообщение об ошибке «Не удалось найти указанную процедуру». Из того, что я прочитал, windows ожидает, что _libmain будет точкой входа, но sqlite ожидает, что sqlite3_sqliteFcts_init будет точкой входа, и я понятия не имею, как решить это, или это даже проблема.