2010-05-18 41 views
0

我想與lua(我已經使用C++,但我是一個n00b與lua,我讀this)使用sqlite3,但我試圖建立庫或任何時候得到以下內容:使用sqlite3與lua

C:\lib\lsqlite3-7>mingw32-make 
process_begin: CreateProcess(NULL, pkg-config --version, ...) failed. 
makefile:53: *** windows32. Stop. 

我不是在生成文件沒有感到驚訝,但我不能做他們(?是空格或製表符它在哪裏,他們必須去),我會覺得有一二進制窗口?

任何簡單的答案讚賞。我沒有時間學習make或安裝cygwin或其他東西。

回答

1

您可能會考慮使用LuaSQL作爲包裝,因爲它已包含在Lua for Windows包中,因此它可能已經在您的系統中。它包括對SQLite3和其他數據庫的支持。

看起來您似乎正在嘗試構建lsqlite3的最新版本,但此發行版未打包以便輕鬆構建於Windows或Windows上。由於LuaForge只有一個源代碼包,因此我沒有試圖追蹤二進制文件。看起來像成功構建它需要手動編輯Makefile,然後在MSYS或Cygwin下運行Makefile,以使它假定存在的* nix實用程序可用。

更新:2012年6月

因爲寫這個答案,我有機會考慮使用lsqlite3自己的,不會要求結合許多不同的數據庫提供的靈活性的一個項目,所以建設對SQLite的嚴格依賴是有道理的。鑑於此,lsqlite3包裝由於它的小尺寸和SQLite C API的許多重要部分的乾淨實現而非常合適。

爲了構建它,我使用了MSYS,它提供了一個最小的類Unix命令提示符並支持與GCC的MinGW端口一起使用的實用程序。在這種環境下,我不得不對Makefile進行小小的修改,強制它使用手動配置,並提供配置詳細信息,以確定lua.h,lua51.dll,sqlite3.hsqlite3.dll在我的系統中隱藏的位置。

唯一真正的技巧就是將Windows路徑名正確映射到MSYS路徑名,方法是將C:更改爲/c/,並避免使用任何帶有空格的文件夾名稱。因此,使用Windows的Lua for C:\Program Files (x86)\Lua\5.1,映射到/c/PROGRA~2/Lua/5.1,使用Windows 8.3短名稱來避免空格。

推薦MSYS優於Windows上其他類Unix構建環境的一個關鍵點是它專門用於此目的。從它構建的程序和DLL沒有任何意外的依賴關係。具體而言,這與Cygwin不同,Cygwin旨在提供在Windows之上分層的完整unix-like體驗。

隨着lsqlite3.dll剛建成,所有我所要做的就是用sqlite3.dll和所有出現的工作實例和測試用例一起在我的Lua package.cpath某處安裝它。

+0

對,我使Makefile與Mingw/MSYS一起工作。你也可以使用lsqlite3 rockspec的「內建」目標來構建,如果luarocks安裝的話可以構建二進制文件。 – 2010-05-18 21:21:48

+0

嗨,對於延遲抱歉,但娛樂節目不得不退後。當我有機會的時候,我會試試Lua的窗戶。謝謝你的提示。 – 2010-05-27 13:06:58

+0

示例luasql代碼的工作原理是,如果在lua for windows的示例代碼中將sqlite3替換爲postgres。請訪問http://code.google.com/p/luaforwindows/downloads/list – 2010-05-28 10:06:39