Lua学习之3 :tolua++导出C++变量给Lua使用
来源:互联网 发布:ubuntu ant 安装路径 编辑:程序博客网 时间:2024/06/06 16:24
一. 分享内容
主要分享如何使用tolua++导出C++中的变量,使Lua能够直接
使用导出的C++变量。
二. 开始分享
在Lua学习之1 :C++调用Lua函数和Lua学习之2 :Lua调用C++函数中学习了C++
和Lua之间的相互调用,知道了怎么暴露一个C++函数给Lua。然而,如果需要暴露给
Lua的C++函数巨多的话,那手工暴露的做法既麻烦又耗费时间。tolua++正是为解决
这种烦恼而诞生的一个工具。
tolua++主要包含2部分,一部分是bin(即tolua++.exe),另一部分是lib(即
tolua++.lib)。其详尽的工作原理可参考tolua++官网。下面是使用tolua++.exe和
tolua++.lib导出C++的变量给Lua使用的一个例子。
0. 生成tolua++.exe
下载的tolua++和lua应该是版本相对应的,tolua++1.0.93对应lua5.1。在tolua++
官网下载tolua++1.0.93。或者下载本文末尾的示例工程。Lua5.1的下载和编译可参考
Lua学习之1 :C++调用Lua函数。
下载到的tolua++1.0.93是一份VC工程,直接编译会出现一些Lua相关的头文件找不
到的错误,将包含的所有Lua头文件的路径改为正确路径即可。Lua头文件路径修改完成
后,编译工程,tolua++.exe生成在tolua++1.0.93\bin路径下。
1. 生成tolua++.lib
新建一个静态库工程tolua++lib,将tolua++1.0.93\src\lib下的.h和.c文件导入,
修改Lua相关的头文件路径后,编译工程,不出意外tolua++.lib被编译出来了。
2. 创建头文件
创建一个名为tvariable.h的头文件,导出一个int类型的变量 i:extern int i; 即t
variable.h内容编辑如下:
extern int i;
3. 创建.pkg文件
创建一个名为tvariable.pkg的文件,其内容编辑如下:
$#include "tvariable.h"extern int i;
4. 生成.cpp文件
在步骤0中,路径tolua++1.0.93\bin下有tolua++.exe,将lua51.dll也加入到该
路径下,这时该目录的文件应该包含的:tolua++.exe,lua51.dll,tvariable.h,
tvariable.pkg。然后在命令行中CD进入该目录,使用以下命令生成variable.cpp文件:
tolua++ -o tvariable.cpp tvariable.pkg
5. 创建Lua脚本
在Lua中只是简单的将C++中导出的变量 i 打印出来,即编辑tvariable.lua内容如下:
print( "tvariable i : " .. i )
6. 测试
新建一个控制台工程tests,将tvariable.h,tvariable.cpp,tvariable.lua加入工程。
在测试工程中,将 i 的设置为1024。
三. 完整的工程
tolua++导出C++变量给Lua使用的完整工程。
- Lua学习之3 :tolua++导出C++变量给Lua使用
- 导出C/C++API给Lua使用
- 导出 C/C++ API 给 Lua 使用
- 导出 C/C++ API 给 Lua 使用
- 导出 C/C++ API 给 Lua 使用
- 导出 C/C++ API 给 Lua 使用
- Quick-Cocos2d-x 使用tolua工具导出C++的类给Lua调用
- Quick-Cocos2d-x 使用tolua工具导出C++的类给Lua调用
- Quick-Cocos2d-x 使用tolua工具导出C++的类给Lua调用
- Quick-Cocos2d-x 使用tolua工具导出C++的类给Lua调用
- Quick-Cocos2d-x 使用tolua工具导出C++的类给Lua调用
- Quick-Cocos2d-x 2.26 使用tolua工具导出C++的类给Lua调用WINDOWS篇
- Lua调用C函数:tolua++ 的使用
- Cocos2d-Lua 3.12 生成绑定 导出C++类给LUA调用( tolua genbindings.py 的使用)
- Cocos2d-Lua 3.12 生成绑定 导出C++类给LUA调用( tolua genbindings.py 的使用)
- 如何导出 C和C++ 的API 给 Lua 使用
- quick-cocos2d-x 导出 C/C++ API 给 Lua 使用
- 导出 C/C++ API 给 Lua 使用(转)
- HDU-2539-点球大战
- ogg_单项同步_ddl
- 两个线程同时调用同一个处理函数的互斥问题
- ogg_rman 初始化
- ACM比赛经验总结
- Lua学习之3 :tolua++导出C++变量给Lua使用
- 在MAC系统下构建uboot的gcc编译环境
- 在IIS中部署WEB应用
- bootstrap使用简介
- web前端资料收集集锦
- hdu_1686 Oulipo
- activemq的连接池,通过spring的JmsTemplate发送消息到指定的Destination
- SDUT 1591 交叉排序
- oracle 数据类型详解---日期型(转载)