带cmake的sqlite3 dll

时间:2018-09-23 20:22:13

标签: c++ sqlite cmake

我正在尝试使用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 */
);

我认为应该可以。但显然不是。我的失败在哪里?

0 个答案:

没有答案