我正在尝试使用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等等。
答案 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.h
,lua51.dll
,sqlite3.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
上的某处,示例和测试用例似乎都能正常工作。