2014-09-30 54 views
0

我正在尋找sqlite3.dll的替代品 - 典型系統或任何其他文件中是否包含sqlite調用的任何文件?我在找一個DLL文件。我知道Mozilla瀏覽器捆綁軟件曾經帶有一個名爲mozsqlite3.dll的文件,其中包含了這些調用,但是現在它似乎已經從他們的捆綁軟件中消失了一些未知的和無證的原因?在Mozilla的捆綁包中有類似的文件嗎?另一個包含sqlite頭文件的DLL文件?

所以,當我這樣做

HMODULE lib0 = LoadLibraryA("sqlite3.dll"); // file

我可以訪問該DLL的內容,而實際上不必與我的遊戲捆綁呢?

我想運送我的遊戲沒有依賴,只有.exe文件。有什麼辦法可以利用另一個類似於sqlite3.dll的文件,其中可能包含sqlite3 API調用的頭文件?例如,mozilla bundle中的mozsqlite3.dll曾經是一種替代方案。

回答

2

我不建議依賴於其他軟件。用戶可能沒有安裝Firefox,或者您可能會遇到版本問題與更高版本的Firefox打包修改後的SQLite實現。

如果您不願意將附加的.dll文件與您的程序一起發佈,我建議您將SQLite本身靜態鏈接到您的可執行文件中。這樣你就可以完全控制你的SQLite,並且用戶將使用你完全測試過的相同版本。

要靜態鏈接SQLite,您必須下載SQLite合併源並使用Visual Studio將自己編譯爲靜態庫,並將生成的.lib文件添加爲項目的依賴項。 Tutorial with images here

+0

如果我靜態鏈接sqlite dll文件,那麼你的意思是什麼?我怎樣才能用msvC++來做到這一點?就像現在我只是連接圖書館。但我需要合併一個DLL,如果我下載了DLL並將其放入我的項目文件夾,然後LoadLibraryA這樣我不需要與我的遊戲一起發貨?這是你的意思,通過靜態鏈接它? – user3251225 2014-09-30 18:22:58

+1

@ user3251225不。靜態鏈接,所有的SQLite代碼將駐留在'.exe'文件中。沒有'.dll's。 – Csq 2014-09-30 18:26:29

+0

但我需要加載庫的原因是因爲如果我不會我不能得到它的procaddress和我的exe文件被標記爲反病毒產品的惡意程序。 所以我想一個替代方法是loadlibrary(sqlite3.dll)然後getprocaddress並將其分配給另一個變量並從那裏使用它。但是現在,如果我正在用我的exe文件從另一個用戶的系統讀取本地文件,Antivirus會將我的程序標記爲病毒! – user3251225 2014-09-30 18:28:42

相關問題