码迷,mamicode.com
首页 > 其他好文 > 详细

VS2008下编译luabind 0.8.1

时间:2014-08-09 15:47:18      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   io   文件   

【转】

学了一段时间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}
 9
10extern "C" int __declspec(dllexport) init(lua_State* L)
11{
12    using namespace luabind;
13
14    open(L);
15
16    module(L)
17    [
18        def("greet", &greet)
19    ];
20
21    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命令行,键入:

bubuko.com,布布扣

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

VS2008下编译luabind 0.8.1,布布扣,bubuko.com

VS2008下编译luabind 0.8.1

标签:style   blog   http   color   使用   os   io   文件   

原文地址:http://www.cnblogs.com/yyxt/p/3900914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!