使用sqlite3和lua

时间:2010-05-18 14:46:16

标签: sqlite lua

我正在尝试使用lua的sqlite3(我已经使用了c ++,但是我是一个带lua的n00b-我读了this)但是在尝试构建库或者其他什么时我得到了以下内容:

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

我对makefile失败并不感到惊讶,但我无法做到(它是空格还是标签?它们必须去哪里?),我原本以为有一个二进制用于windows? / p>

任何简单的答案都表示赞赏。我没有时间学习制作或安装cygwin等等。

1 个答案:

答案 0 :(得分:1)

您可能会考虑使用LuaSQL作为您的包装器,因为它已经包含在Lua for Windows包中,因此它可能已经存在于您的系统中。它包括对其他数据库中SQLite3的支持。

看起来你正在尝试构建最新版本的lsqlite3,但是这个版本并没有打包,不能轻松构建或用于Windows。我没有尝试追踪二进制文件,因为LuaForge只有一个源包。看起来成功构建它需要手动编辑Makefile,然后在MSYS或Cygwin下运行Makefile,以便它可以使用它所假定的* nix实用程序。

更新:2012年6月

自写这个答案以来,我有机会考虑将lsqlite3本身用于一个不需要灵活地绑定到许多不同数据库提供程序的项目,因此建立对SQLite的紧密依赖是有道理的。鉴于此,lsqlite3包装器非常适合,因为它的体积小,并且可以很好地实现SQLite C API的许多重要部分。

为了构建它,我使用了MSYS,它提供了一个类似于unix的命令提示符和支持实用程序,用于GCC的MinGW端口。在该环境中,我不得不对Makefile进行一些小修改以强制它使用手动配置,并提供标识lua.hlua51.dllsqlite3.h和{的位置的配置详细信息。 {1}}隐藏在我的系统上。

唯一真正的技巧是通过将sqlite3.dll更改为C:来正确地将Windows路径名映射到MSYS路径名,并避免使用任何带有空格的文件夹名。因此,使用Lua for Windows /c/,映射到C:\Program Files (x86)\Lua\5.1,使用Windows 8.3短名称来避免空格。

在Windows上推荐MSYS而不是其他类似unix的构建环境的一个关键点是它专门用于此目的。从它构建的程序和DLL没有任何意外的依赖。具体来说,这与Cygwin不同,Cygwin旨在提供在Windows之上分层的完整类Unix体验。

新建/c/PROGRA~2/Lua/5.1后,我所要做的就是将它安装在我的Lua lsqlite3.dll以及package.cpath上的某处,示例和测试用例似乎都能正常工作。