[英]How do I include a SQLite DLL in my C++ project?
我正在嘗試通過DLL將SQLite添加到我的項目中。
我從下載頁面下載了SQLiteDLL-3,提取了其內容(DLL和.h文件),並在其上運行了lib.exe以生成.lib文件。 然后,我在項目設置中的鏈接器>>常規下將包含.lib和.dll文件的目錄設置為附加庫目錄。
然后我從下載頁面下載了SQLiteSource-3,並將SQLite3.h文件解壓縮到包含.Lib和.DLL文件的目錄,並將該目錄添加為C / C ++ >> General下的附加包含目錄。 我在主文件中添加了#include,然后在鏈接器>>輸入中添加了sqlite3.dll作為附加依賴項。
基本上我跟着這個 ,但是當我運行它時,我得到一個錯誤說:
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個未解決的外部因素
這對我有用:
在Visual Studio 2010中,單擊“工具,VS命令提示符”
在命令行窗口中,輸入,例如:
lib /DEF:"C:\SQLite\sqlite3.def" /OUT:"C:\SQLite\sqlite3.lib"
在Solution Explorer窗口中,右鍵單擊您的項目,添加“sqlite3.lib”文件。
(您認為SQLite團隊可能在下載中包含.lib嗎?)
更新: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%
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.