在没有 SCons 的情况下编译 Toluapp

lua-users home
wiki

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

我想把这个帖子发到 tolua++ 网站上,但他们没有 wiki。

tolua++ 的 INSTALL 文件让你知道如何在没有 SCons 的情况下编译它。这很容易,但我希望能为那些需要花 5 分钟(呃……15 分钟)来弄明白这件事的人节省一些时间。

使用 GCC/Mingw

我使用的是 mingw 安装上的 gcc 3.4.2。但我认为这应该对大多数人有用,至少对于使用 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 
- 假设 libtolua++.a 已在 src\lib 目录中创建,这将会在 src\bin 目录中创建 tolua++ 可执行文件。

注意 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 include 和 library 目录。过程与上面相同。在 `"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 packs) 和 tolua++ 1.0.91 上测试。


RecentChanges · preferences
编辑 · 历史
最后编辑于 2013 年 3 月 5 日 晚上 10:17 GMT (差异)