我正在尝试通过DLL将SQLite添加到我的项目中。
我从download page下载了SQLiteDLL-3,提取了其内容(DLL和.h文件),并在其上运行了lib.exe以生成.lib文件。然后,在项目设置中,在链接器>>下,将包含.lib和.dll文件的目录设置为附加库目录。一般
然后我从下载页面下载了SQLiteSource-3,并将SQLite3.h文件解压缩到包含.Lib和.DLL文件的目录,并将该目录添加为C / C ++下的附加包含目录>>一般。我将#include添加到我的主文件中,然后在链接器中添加了sqlite3.dll作为附加依赖关系>>输入
基本上我跟着this,但是当我运行它时,我收到一条错误说:
fatal error LNK1107: invalid or corrupt file: cannot read at 0x2B8
我尝试了很多方法来纠正它,包括在x86和x64下构建.lib文件,并在Additional Dependencies列表中包含.lib文件的完整路径。我得到的总是那个错误。它似乎至少可以找到.h文件,因为如果我在include中弄乱了名字,我会得到一个“找不到文件”的错误,因此该部分似乎是正确的。
有人可以看到我可能做错了什么,以及如何纠正这个问题?
更新 通过将.lib文件添加到Additional Dependies列表而不是.dll文件来修复“无效或损坏的文件”问题。现在我得到了未解决的链接器错误:
错误LNK2019:函数_main中引用的未解析的外部符号_sqlite3_exec
错误LNK2019:函数_main中引用了未解析的外部符号_sqlite3_open
致命错误LNK1120:2个未解析的外部
答案 0 :(得分:13)
这对我有用:
在Visual Studio 2010中,单击“工具,VS命令提示符”
在命令行窗口中输入,例如:
lib /DEF:"C:\SQLite\sqlite3.def" /OUT:"C:\SQLite\sqlite3.lib"
在Solution Explorer窗口中,右键单击您的项目,添加“sqlite3.lib”文件。
(你认为SQLite团伙可以在下载中包含.lib吗?)
答案 1 :(得分:1)
答案 2 :(得分:1)
更新:SQLite 3.28似乎未附带.DEF文件。要创建DEF和LIB,请执行以下操作:
:: Dump SQLite.DLL exports
set DUMPBIN="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86\dumpbin.exe"
set LIBX="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86\lib.exe"
set SQL="C:\SQLite\sqlite3.dll"
set DEF="C:\SQLite\sqlite3.def"
set LIB="C:\SQLite\sqlite3.lib"
:: [1] run dumpbin
%DUMPBIN% /EXPORTS /NOLOGO /OUT:%DEF% %SQL%
:: [2] manually edit .DEF file to look proper
:: [3] run LIB
%LIBX% /DEF:%DEF% /OUT:%LIB%