在没有 Scons 的情况下编译 Toluapp |
|
我想在 tolua++ 网站上发布这个,但他们没有 wiki。
tolua++ 的 INSTALL 文件可以让你弄清楚如何在没有 SCons 的情况下编译它。这很简单,但我希望为人们节省 5 分钟(呃……15 分钟)的时间来弄清楚这一点。
我使用的是 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 .
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)
与上面针对 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 上测试。