首页 > 代码库 > VS2008下编译luabind 0.8.1

VS2008下编译luabind 0.8.1

【转】

学了一段时间Lua,显然直接在项目中使用是很不方便,google了一下,似乎大家都对luabind这个lua包装类青睐有加,于是我也随大势想用用看。
     先做好准备工作,下载了luabin 0.8.1源码,Boost 1.3.8源码和lua 5.1.4源码,编译环境是VS2008 SP1。之前在网上看到一些文章说这些开源软件之间的版本依赖比较敏感,可能会有这样那样的问题,动手之前有些惶恐。
     幸运的是,编译过程很顺利,如下:
     1.编译lua 5.1.4
     进入VS2008的命令行工具,定位到lua的源码目录下,执行命令etc\luavs.bat,没什么问题的话很快就可以编译好lua,得到lua51.lib和lua51.dll。
     2.编译luabind
     解压下载回来的luabind压缩包,假设解压到d:\luabind-0.8.1\,Boost解压到d:\boost 1_38_0\,lua解压到d:\lua 5.1.4\
     在VS中新建一个静态库项目,将d:\luabind-0.8.1\src下的源码全部添加到项目中,然后在项目中新建luabind和luabind\detail\两个虚拟文件夹,对应的将d:\luabind-0.8.1\luabind和d:\luabind-0.8.1\luabind\detail下的文件添加到文件夹中。
     然后为项目添加附加包含目录,右键点击项目节点->属性->配置属性->C\C++标签下,在附加包含目录中填入d:\luabind-0.8.1\;d:\boost 1_38_0\k;d:\lua 5.1.4\src\。然后修改项目字符集为多字节字符集。
     准备就绪,生成项目。在我的环境中编译很顺利,没有出现任何问题,成功后会得到luabind.lib。

     接下来就按照惯例来写一个hello world程序作为使用luabind的第一步。
     在VS中新建一个控制台项目,类型为DLL,命名项目为Hello World,然后键入以下代码:

#include "stdafx.h" 2#include <iostream> 3#include <luabind/luabind.hpp> 4 5void greet() 6{ 7    std::cout << "hello world!\n"; 8} 910extern "C" int __declspec(dllexport) init(lua_State* L)11{12    using namespace luabind;1314    open(L);1516    module(L)17    [18        def("greet", &greet)19    ];2021    return 0;22}

注意,在Windows环境下init函数之前是要加__declspec(dllexport)才能将函数导出的,而luabind的文档中的环境是linux,默认不用加__declspec(dllexport)也可以导出(就因为这个折腾了我半天才把hello word成功运行)。
   编译项目,(记得将luabind.lib和lua51.lib添加到链接选项中:项目属性->连接器->输入->附加依赖文件,加入luabind.lib和lua51.lib)。
   将hello world.dll放到lua51.dll和lua.exe所在的目录下。
   打开lua命令行,键入:

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