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}
 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命令行,键入:

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

VS2008下编译luabind 0.8.1

时间: 2024-12-28 13:58:58

VS2008下编译luabind 0.8.1的相关文章

VS2008下编译BOOST 1.39的ASIO库

由于全部编译BOOST库需要的时间太长,而且耗费空间,况且我只需要用ASIO库,所以就没有必要全部编译了. boost库到www.boost.org上下载. 编译很简单,假设你的boost存放的目录是D:/BOOST_139. 1.运行VS2008的命令提示行,进入D:/BOOST_139/tools/jam;执行build_dist.bat,这样就产生了bjam.exe,该文件位于/tools/jam/stage/bin.ntx86 2.为了方便,将bjam.exe拷贝到D:/BOOST_13

在VS2008下编译出sqlite3.dll和sqlite3.lib

废话就不多说了,直接进入主题. 1.进入http://sqlite.org/download.html下载sqlite-amalgamation-3071300.zip和sqlite-dll-win32-x86-3071300.zip,解压: 2.创建一个空的win32 dll项目,将解压缩的文件添加进来,进行编译,没有报错,但是查看编译目录,发现只是生成了sqlite3.dll而不见sqlite3.lib文件: 3.项目属性--配置属性--连接器--输入--模块定义文件,添加sqlite3.d

Ubuntu下编译3.0.4内核

Ubuntu下编译3.0.4内核 Linux内核3.0版本发布已有一段时间了,不知道这个版本号大跃进的内核是否好用.目前各个发行版的linux还仍未采用3.0的内核,因此可以自己动手编译内核来感受一下!趁着这次编译内核的机会可以再熟悉一下编译内核的步骤. 1.下载并解压内核到任意目录 从源码官网下载最新的内核源码3.0.4,可以解压至任意目录,我放在主目录下: 1 ~$ tar xjvf linux-3.0.4.tar.bz2 2.配置内核 对内核进行配置是为了得到内核配置文件.config.通

Ubantu14.04下编译OpenCV3.0.0

以前一直使用opencv 2.x的版本,现在3.0的已经发布成正式版了,尝试在Linux下安装. 收集了一篇不错的经验教程:Ubuntu14.04下安装OpenCV3.0经验. 编译的过程大概需要30分钟左右.亲测教程可用,需要注意的是把测试图片girls.jpg替换成自己的图片即可. 测试的例子 1.创建工作目录 mkdir ~/own/mycode cd ~/own/mycode gedit readimage.cpp 2.编辑如下代码 //! [includes] #include <op

vs2008 下编译jrtplib-3.9.0成功

jrtplib-3.9.0的编译,终于搞通了.网上搜集了很多资料,自己也调试了很久. 首先,jrtplib-3.9.0是什么不用多说吧,它是一个很牛的老外用C++写的一个开源的RTP协议库,用它可以进行数据的实时传输.RTP是实时传输协议的简称,由最新的RFC3550文档进行规范. 1.从http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jrtplib下载最新的jrtplib-3.9.0和jthread-1.3.0. 2.从htt

VS2008下编译boost_1_47_0

1,boost下载 如果不想自己编译,可下载http://boostpro.com/download/boost_1_47_setup.exe,安装后,程序会提供选项供下载已经编译好的库文件,基于vs2008的所有库大概有1.3G. 下载boost最新版本:http://cdnetworks-kr-2.dl.sourceforge.net/project/boost/boost/1.47.0/boost_1_47_0.7z 2,boost编译 a,解压boost_1_47_0.7z b,打开 V

【转】如何在Ubuntu11.10(32位)下编译Android4.0源码(图文)

原文网址:http://blog.csdn.net/flydream0/article/details/7046612 关于如何下载Android4.0的源码请参考我的另一篇文章: http://blog.csdn.net/flydream0/article/details/7036156 3 开始编译 3.1 初始化环境$ source build/envsetup.sh3.2 选择目标$ lunch full-eng大概会再现如下提示:============================

Ubuntu16.04下编译android6.0源码

http://blog.csdn.net/cnliwy/article/details/52189349 作为一名合格的android开发人员,怎么能不会编译android源码呢!一定要来一次说编译就编译的旅程,否则你的人生是不完整的!好,那么我们进入正题! 本次编译环境采用Ubuntu16.04LTE,android源码选择android6.0!官方建议采用Ubuntu14版本,主要是我刚开始没在意系统版本,然后就直接下载安装16.04版本了,然后也懒得换了,所以就选择了这个版本....下面我

LNMP-CentOS下编译PHP7.0

1.安装 epel-release源 yum install epel-release -y 2.安装编译器.依赖包 yum -y install gd-devel zlib-devel libjpeg-devel libpng-devel libiconv-devel freetype-devel libxml2 libxml2-devel openssl openssl-devel curl-devel libxslt-devel libmcrypt-devel mhash mcrypt g