VS2012编译luabind-0.9.1

网上查了好多资料,自己在vs2012试着编译luabind-0.9.1,步骤如下:

1.下载lua-5.1.4,luabind-0.9.1,boost-1_52_0安装包

2..编译lua 5.1.4
     打开VS2012的命令工具窗口,进入D:\Program Files\vs\lua-5.1.4\lua-5.1.4源码目录下,执行命令etc\luavs.bat,编译成功后得到lua.exe,lua51.lib和lua51.dll。

3.编译boost-1_52_0

打开VS2012的命令工具窗口,进入D:\boost_1_52_0\boost_1_52_0执行bootstrap.bat,成功后在该目录下生成bjam.exe,编译boost库

bjam stage --toolset=msvc-11.0 --without-graph --without-graph_parallel --without-math --without-mpi --without-python --without-serialization --without-wave --stagedir="D:\boost_1_52_0\boost_1_52_0\bin\vc11" link=static runtime-link=shared runtime-link=static threading=multi debug release

编译取舍的参考http://www.boost.org/doc/libs/1_52_0/more/getting_started/windows.html

4.编译luabind静态库

在VS中新建一个静态库项目(笔者这里取名luabind),将d:\luabind-0.9.1\src下的源码全部添加到项目中,右键点击项目节点->属性->配置属性->C\C++标签下,在附加包含目录中填入D:\Program Files\vs\lua-5.1.4\lua-5.1.4\src;D:\luabind-0.9.1\luabind;D:\boost_1_52_0\boost_1_52_0然后修改项目字符集为多字节字符集。

编译成功后会生成luabind.lib

5.测试

 在VS中新建一个控制台项目取名为luabind_test,类型为DLL,然后输入以下代码:

#include <iostream>
#include <luabind/luabind.hpp>
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
void greet ()
{
    std::cout<<"hello world! \n" ;
}
extern "C" int __declspec(dllexport) init(lua_State *L)
{
    using namespace luabind ;
    open (L) ;
    module (L)
    [
        def("greet",&greet)//注册greet()函数
    ];
    return   0 ;
}

   注意,在Windows环境下init函数之前是要加__declspec(dllexport)才能将函数导出的,而luabind的文档中的环境是linux,默认不用加__declspec(dllexport)也可以导出。
   编译项目,(记得将luabind.lib和lua51.lib添加到链接选项中:项目属性->连接器->输入->附加依赖项中添加luabind.lib;lua51.lib(注:lua51.lib不可少,笔者当初就是少了这个导致编译出错-.-),项目属性->连接器->常规->附加库目录中加入D:\sucess\luabind\Debug;D:\Program Files\vs\lua-5.1.4\lua-5.1.4\src;D:\boost_1_52_0\boost_1_52_0\bin\vc11\lib;)。
   将luabind_test.dll放到lua51.dll,lua51.lib和lua.exe所在的目录,笔者这里是D:\Program Files\vs\lua-5.1.4\lua-5.1.4\src。
   双击lua.exe,输入:

>package.loadlib('luabind_test.lib', 'init')()

>greet()

hello world!

>
     

至于在linux环境下的编译,笔者试了好久,依然没有成功在/usr/local/lib下生成libluabindd.so文件,先记下以后有时间在研究吧。


参考

http://www.cppblog.com/eros/archive/2009/04/29/81508.aspx

http://www.cnblogs.com/kex1n/archive/2012/09/24/2700793.html

http://blog.csdn.net/luxiaoyu_sdc/article/details/9328261


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值