VS2010下使用swig将c++和lua连接起来
来源:互联网 发布:知而不争的争读音 编辑:程序博客网 时间:2024/04/29 07:52
swig是一个开发工具,用来帮助使用C/C++编写的软件和各种脚本语言进行嵌入连接。这里我只说下我这几天自己使用swig连接lua的经验吧。
首先去官网下载swig:www.swig.org,注意在windows平台下下载的是swigwin版本的。下载下来直接解压缩就可以了。然后配置一下你的环境变量,把你的swigwin的路径添加进path里面去。查看swig的环境变量是否设置好了,可以在dos下运行 “swig”命令,看提示即可,提示“Must specify an input file......”即表示环境变量设置成功了。
要想使用swig的功能,首先你得有一个接口文件,一般是XXX.i形式的,也就是后缀是.i。这个接口文件一般是自己手写的,因为涉及到在C++和脚本语言里面对象生命周期的问题,如果自动生成的话可能有比较大的风险。具体写法可以网上查找,有很多的文档可以参考,或者在你下载的swig解压缩包里::\swigwin-2.0.12\swigwin-2.0.12\Examples,这个目录下有很多例子,各种脚本的都有,其实我觉得看这些就够了,有不懂的地方就上网查好了。我需要用的是lua,所以我就研究了lua下的各种例子。
接下来去官网下载lua:www.lua.org,注意这里最好下载5.1或者5.1之前的版本,目前swig尚不支持5.2或者更高的版本。这里要说一下,官网上下载的是压缩包,解压缩之后是需要你自己手动生成lua的.lib文件的。打开VS2010,新建Win32 Console Application(Win32控制台程序),选择static library,去掉下面的预编译头的勾,然后将你下载下来的lua目录下的src里面的所有文件全部添加到你新建的工程里面,编译即可。如果有错,可能是你的工程的设置不对。
如果你下载的是lua的安装程序,那就不用自己生成lib文件了,安装完成了里面都有,一般是两个:lua51.lib和lua5.1.lib。
接下来就是生成DLL。假设我们现在有自己写的example.h、example.cpp和example.i文件。新建Win32 Console Application(Win32 控制台程序),选择DLL,下面的选择Empty Property,点击完成。在头文件里面添加:example.h,lua.h,lauxlib.h,luaconf.h,注:如果你的lua的lib文件是手动生成的,这里就需要把这3个lua相关的头文件手动添加进来;如果是安装版本的,配置如下: 工程->属性: C/C++ : Additional Include Directories:E:\lua\5.1\include; Precompiled Headers: Not Using Precompiled Headers,去掉“StdAfx.h”; Linker: General->Enable Incremental Linking: 选中 No(/INCREMENTAL:NO); Input->Additional Dependencies: 添加lua51.lib,lua5.1.lib; 工程的Configuration Properties: General 确认: Configuration Type:DLL, Character Set: Use Unicode Characer Set. 最后 右击 example.i文件->Propertites:Configuration Propertites-> ITem Type:选中 Custom Build Tool,然后在Custom Build Tool-> Commond Line写:swig.exe -c++ -lua%(FullPath). Outputs里面写:%(InputName)_wrap.cxx;%(Outputs)
这样,所有的配置就算全部完成了,编译,生成example.dll.
下面写一个test.lua文件测试swig是否使用成功了。test.lua的内容如下:
if string.sub(_VERSION,1,7)=='Lua 5.0' then
lib=load.lib('example.dll', 'luaopen_example')
assert(lib) ()
else
require('example')
end
x=42
y=105
g=example.add(x,y)
print("The example of",x,"and",y,"is",g)
print("Foo=", example.Foo)
example.Foo = 3.1415926
print("Foo=", example.Foo)
- VS2010下使用swig将c++和lua连接起来
- linux下使用SWIG将C/C++库移植到Java
- swig+lua初步(c++)
- windows下使用swig
- 将点连接起来
- 用Swig将c/c++程序转为java代码(使用swig实现java调用c、c++的方法)
- 使用SWIG和Python对C/C++进行单元测试(一)
- 使用SWIG和Python对C/C++进行单元测试(二)
- 使用SWIG和Python对C/C++进行单元测试
- 在Python中使用SWIG调用C和C++程序
- 简单的实现将C字符串数组连接起来
- linux下使用swig让python调用C++(复杂版:包括多文件调用和链接库)
- windows 环境下使用swig
- 将html文件和css文件连接起来的方法
- swig-python使用和测试
- 使用swig将C/C++代码转为JAVA接口(Windows平台)
- 使用SWIG将C/C++库移植到其他语言中
- Android突破八.使用SWIG将C/C++库移植到其他语言中
- matlab中find函数的使用说明
- Yahoo!网站性能最佳体验的34条黄金守则(转载)
- 项目二,三角形类2
- URAL 1073. Square Country(完全背包)
- Mac 系统下 Android 调试环境搭建
- VS2010下使用swig将c++和lua连接起来
- 偶见一道华为笔试题(简单的题更显算法啊--不可忽视的数学)
- C++socket编程步骤
- 顺了一篇文章,讲hashCode和equals的,感觉不错.
- meta-data的使用
- rabbitMq设置引起的生产问题
- Cocos2d-x程序中的一些小细节
- 对技术的态度/编程修养(上)
- RTEMS 安装脚本