我无法弄清楚如何在Visual Studio中使用sqlite3.dll(或任何dll)来处理我的C ++项目。
我收到的错误消息是 LNK2001未解析的外部符号sqlite3_open
这是我到目前为止所做的:
lib /def:sqlite3.def
生成了sqlite3.lib (几乎按照here)
的说明进行操作感谢您的帮助
答案 0 :(得分:3)
问题是默认情况下头文件假定sqlite是静态链接的,而不是动态链接到dll。
sqlite3.h的这一部分负责:
#ifndef SQLITE_API
# define SQLITE_API
#endif
如果在项目属性中设置每个项目的定义:
SQLITE_API=__declspec(dllimport)
这应解决您的链接错误。 或者,你可以把
#define SQLITE_API __declspec(dllimport)
就在#include sqlite3.h之前。
答案 1 :(得分:0)
很难准确说明问题发生的原因。有很多原因可能导致LNK2001
错误。 MSDN包含良好的核对清单。
您可以尝试使用/VERBOSE
选项来确定链接器引用的文件。将此选项放在Project -> Preferences -> Linker -> Command Line -> Additional Options
中。输出应包含类似的字符串:
Searching e:\SQLite\sqlite-dll-win32-x86-3150100\sqlite3.lib:
Found _sqlite3_open
Referenced in ConsoleApplication2.obj
Loaded sqlite3.lib(sqlite3.dll)
注意VS运行时库,Debug和Release库之间不应该混淆。