在没有 Scons 的情况下编译 Toluapp

lua-users home
wiki

在没有 SCons 的情况下编译 Tolua++

我想在 tolua++ 网站上发布这个,但他们没有 wiki。

tolua++ 的 INSTALL 文件可以让你弄清楚如何在没有 SCons 的情况下编译它。这很简单,但我希望为人们节省 5 分钟(呃……15 分钟)的时间来弄清楚这一点。

使用 GCC/Mingw

我使用的是 gcc 3.4.2,在 mingw 安装环境下。但我认为这对大多数人来说应该有效,至少对那些使用 gcc 的人来说,只需要做一些小的修改。

*首先,你需要 cd 到你下载并解压缩的 tolua++ 文件夹的目录。

cd <path_to_tolua++_folder>\src\lib
使用的命令是
tolua++_1.0.5\src\lib> gcc -shared -o tolua++.dll *.c <path_to_lua>\Lua502.dll -I ..\..\include -I <path_to_lua>\include
- 这将在 src\lib 目录中创建动态库 tolua++.dll。
tolua++_1.0.5-1\src\lib> gcc -c *.c  -I ..\..\include -I <path_to_lua>\include
tolua++_1.0.5-1\src\lib> ar rcsv libtolua++.a *.o
- 这将在 src\lib 目录中创建静态链接库。
tolua++_1.0.5\src\bin> gcc tolua.c toluabind.c -I ..\..\include -I <path_to_lua>\include -L ..\lib\ -ltolua++ -L <path_to_lua>\Lua502.dll 
- 这将在 src\bin 目录中创建 tolua++ 可执行文件,假设 libtolua++.a 是在 src\lib 目录中创建的。

注意 1:如果你链接的是 lua 静态库而不是动态库,请将 <path_to_lua>\Lua502.dll 替换为 -L <path_to_lua>\lib -llua .

使用 Visual Studio 2003

DLL

打开“文件->新建项目”菜单。从项目类型列表框中选择“Visual C++ 项目->Win32”。从模板列表框中选择“Win32 项目”。对于项目名称,输入“tolua++”。

当向导打开时,在右侧选择“应用程序设置”。选择“DLL”并点击“完成”。

在解决方案资源管理器中右键单击“源文件”,然后选择“添加->现有项”。浏览到 tolua++\src\lib 目录的位置。突出显示所有 .c 和 .h 文件并将它们添加到项目中。你也可以选择将 include 目录中的 tolua++.h 文件添加到“头文件”文件夹中。

右键单击解决方案资源管理器中的 tolua++ 项目,然后选择“属性”。

在“C/C++->常规”部分中选择“附加包含目录”选项。导航到 Lua 包含文件的目录。

在“C/C++->预处理器”部分中添加以下内容:TOLUA_API=extern __declspec(dllexport) 在“C/C++->预编译头文件”部分中,关闭预编译头文件。在“链接器->常规”部分中选择“附加库目录”选项,并导航到 Lua .lib 库文件的目录。在“链接器->输入”部分中添加 lua.lib 和 lualib.lib(假设这些是你的 lua 库)。

编译项目应该会生成一个 tolua++.dll。

EXE

要创建 tolua++.exe,请打开“文件->新建项目”菜单,选择“Visual C++->Win32->Win32 控制台”项目。将文件 tolua.c 和 toluabind.c 添加到项目中。

你需要将所有相关的 lua 包含和库目录添加到这个项目中。过程与上面相同。在“C/C++->预处理器”部分中,添加:TOLUA_API=extern __declspec(dllimport),... 等等 ...

请注意,对于 v1.0.92,我不得不删除 toluabind.c 中出现的 TOLUA_API

int TOLUA_API tolua_tolua_open (lua_State* tolua_S)
变为
int tolua_tolua_open (lua_State* tolua_S)

使用 Visual Studio 2005

与上面针对 vs2003 的注释基本相同,但需要进行一些细微调整。

请注意,由于 VS 对 c99 的支持较差,"EXE" 构建中的 'toluabind.c' 无法编译。其中有很多行代码类似于:

... int top; top = lua_gettop(tolua_S); static unsigned char B[] = { ...

这些代码需要更改为:

... int top = lua_gettop(tolua_S); static unsigned char B[] = { ...

或类似的代码。

已在 vs2005(无 Service Pack)和 tolua++ 1.0.91 上测试。


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2013 年 3 月 6 日凌晨 4:17 GMT (差异)