我正在尝试使用cmake构建一个SQLite3.dll。我对cmake和dll非常满意。使用cmake和ninja,我得到一个dll作为输出,而没有任何错误消息。但是dll无法正常工作。在项目中,我包含了dll,我尝试使用的任何sqlite3方法都得到了无法解析的外部引用。例如,如果我使用“ sqlite3_open(“ test.db”,&db)“ 我收到未解决的外部参考错误。 如果我用依赖项遍历检查我的dll,它不会显示任何依赖项。所以我想我在构建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中,我写了makro:
#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 */
);
我认为应该可以。但显然不是。我的失败在哪里?