Я пытаюсь создать SQLite3.dll с помощью cmake. Я очень зеленый с cmake и dll. С cmake и ninja я получаю dll в качестве вывода без каких-либо сообщений об ошибках. Но dll не работает. В проект я включил dll, я получаю неразрешенные внешние ссылки с любым методом sqlite3, который я пробую. Например, если я использую sqlite3_open ("test.db", & db) " Я получаю неразрешенную ошибку внешней ссылки. Если я проверю свою dll с помощью dependency walker, она не покажет никаких зависимостей. Итак, я предполагаю, что я сделал что-то не так, создав свою dll, и ничего не экспортируется. Мой Makelists.txt - это
project(sqlite3)
add_definitions(-DCOMPILE_SQLITE)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(sqlite3_headers sqlite3.h)
set(sqlite3_sources sqlite3.c)
add_library(sqlite3 SHARED sqlite3.h sqlite3.c)
install(TARGETS sqlite3
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/static
)
В sqlite3.h я написал макрос:
#ifdef COMPILE_SQLITE
#define Export __declspec(dllexport)
#else
#define Export __declspec(dllimport)
#endif
а перед декларациями написал «Экспорт». Нравиться:
SQLITE_API Export int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
Я думал, что это должно сработать. Но очевидно, что это не так. Где моя неудача?
Почему бы просто не следовать официальные инструкции? Вы не должны редактировать sqlite3.h или sqlite3.c, чтобы добавлять что-то в любом случае.




