vs2010中建立luabind静态库

来源:互联网 发布:淘宝商品上下架 编辑:程序博客网 时间:2024/05/21 08:53

一、前期准备

 1.安装boost 

请参考网络上相应资料,这个很多也很容易找到

 2.下载并生成lua静态库

请参考我的文章《lua如何在VS2010中配置静态库》,网址为:点击打开链接
这里有一个注意事项,那就是luabind我们如果是下载的是luabind-0.9.1,那么lua要下载5.1版本,貌似5.20也可以,但是我没有去尝试。
     解压缩包,例如我解压缩到E:\lua\lua-5.1

3.下载luabind源代码

下载网址:点击打开链接,解压缩包,例如我解压缩到E:\lua\luabind-0.9.1

二、生成静态库

   1.使用向导生成项目/解决方案

使用vs2010的向导生成静态库项目,去掉“使用预编译头”复选框,取名叫做luabind_lib,文件夹为E:\lua\luabind_lib

 2.添加luabind源代码文件

  右击工程项目"luabind_lib"的“头文件“文件夹 ->添加->新建筛选器,重命名为detail(其实就是添加一个新的虚拟的分类文件夹); 右击“detail“文件夹->添加->现有项->选择 E:\lua\luabind-0.9.1\luabind-0.9.1\luabind\detail目录下的文件添加;右击”头文件“->
添加->现有项->选择 E:\lua\luabind-0.9.1\luabind-0.9.1\luabind目录中除detail文件夹之外的文件。
  右击”源文件“文件夹->添加->现有项->选择 E:\lua\luabind-0.9.1\luabind-0.9.1\src目录下的所有文件

 3.添加包含目录

因为luabind用的是boost中的模板元编程写的,所以需要包含boost目录,他是连接C++和lua的桥梁,所以需要包含lua,最后还要包含他自己添加luabind源代码文件的目录。
        右击luabind_lib项目->属性->配置属性->C/C++->常规->附加包含目录   添加:
   a.luabind 源文件目录:E:\lua\luabind-0.9.1\luabind-0.9.1(注意是外层目录)
b.lua源文件目录:E:\lua\lua-5.1\lua-5.1\src
c.boost源文件目录:D:\Program Files %28x86%29\bost\boost_1_54_0(这个之前就安装好了)

4.生成静态库

右击生成解决方案/项目,生成静态库

三、使用静态库

1.新建一个控制台项目取名luabind_test

2.我们需要添加lua静态库

lua静态库已经在准备工作中做好了,右击解决方案->添加->现有项目 

3.添加第二部做好的luabind静态库

右击解决方案->添加->现有项目->E:\lua\luabind_lib\luabind_lib\luabind_lib\luabind_lib.vcxproj

4.配置依赖关系

右击luabind-test项目->属性->通用属性->框架和引用->添加新引用->选择以上步骤1,2中添加的两个静态库

5.添加包含目录

右击luabind_test项目->属性->配置属性->C/C++->常规->附加包含目录   添加:
a.luabind 源文件目录:E:\lua\luabind-0.9.1\luabind-0.9.1(注意是外层目录)
b.lua源文件目录:E:\lua\lua-5.1\lua-5.1\src
c.boost源文件目录:D:\Program Files %28x86%29\bost\boost_1_54_0(这个之前就安装好了)

6.添加测试代码

#include "stdafx.h"#include <iostream>extern "C" {         #include "lua.h"         #include "lualib.h"         #include "lauxlib.h" } #include <iostream> #include <luabind/luabind.hpp>using namespace std;int _tmain(int argc, _TCHAR* argv[]){lua_State *L = ::luaL_newstate();  /* opens Lua */luabind::open(L);luaL_dostring(L,"function add(first,second)\n return first + second\n end\n");  try{std::cout<<"Result:"<<luabind::call_function<int>(L,"add",2,3)<<std::endl;}catch(luabind::error& e){std::cout<<"catch exception:"<<e.what()<<std::endl;}::lua_close(L);}

7.生成静态库

编译运行,运行结果”Result:5“
参考网址:点击打开链接





》》》

0 0
原创粉丝点击