利用luabind将Lua嵌入到C++项目中(二)

         第二篇——语言差异及解决方案(初级篇)

By : HengStar(欣恒)

 

 原文链接:http://blog.csdn.net/gongxinheng/archive/2009/07/26/4381217.aspx

 

通过上一篇的介绍,我们已经了解到了luabind的基本架设方法了,本篇将会用我自己在实践中的经验,通过举例来说明一些实际开发中可能会遇到的语言差异上带来的一些问题及个人尝试过的解决方案。

 

一.   默认参数 VS 参数个数严格匹配
众所周知,C++中的默认参数能给我们带来很大程度上的便利,观察以下代码:

PS:
这个函数声明只是突发地想到的,没什么特别的含义(因为我自己也养了条可爱的小狗^^),假设我们养了很多狗,也可能是开了一个宠物培训基地^^我们给狗喂食的时候通过dogName来确定给哪只狗喂,喂的食物类型foodType有默认参数FOOD_DOGFOOD(因为我通常只给它吃狗粮),然后我要调用此函数的时候经常会这样写feedDog( “豆豆” );使用缺省食物类型参数,由于习惯问题,我通过luabinddef("feedDog", &feedDog)将该函数注册到Lua中使用仍然用feedDog( “豆豆” )调用,结果在执行Lua脚本时候出现错误:”No matching overload found, candidates : bool feedDog(char const*, int)” 也就是该调用没有找到匹配的重载函数,但是有候选的两个参数的feedDog函数,好了,到这里大家应该看出来是怎么回事了吧,暂且不说在C++中定义的宏FOOD_DOGFOOD不能在Lua中使用,即使你用数字0

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Luabind是一个开源的C++库,用于绑定Lua脚本C++代码。它使得在C++代码调用Lua脚本变得更加容易。在Linux平台上安装Luabind库需要进行以下步骤: 1. 下载Luabind库 可以从Luabind的官方网站(http://luabind.sourceforge.net/)下载最新版本的Luabind库。下载后将文件解压缩到一个目录。 2. 安装Lua库 在Linux系统上安装Luabind库之前,需要确保已经安装了Lua库。如果还没有安装Lua库,可以通过以下命令来安装: sudo apt-get install lua5.1 3. 安装boost库 Luabind库依赖于boost库,因此需要先安装boost库。可以通过以下命令来安装: sudo apt-get install libboost-all-dev 4. 编译和安装Luabind库 进入Luabind库的解压缩目录,然后执行以下命令: ./configure make sudo make install 执行完成后,Luabind库就已经安装完成了。 5. 测试Luabind库 可以通过以下步骤来测试Luabind库是否安装成功: 创建一个名为test.cpp的文件,包含以下代码: #include <iostream> #include <luabind/luabind.hpp> void hello() { std::cout << "Hello, world!" << std::endl; } int main() { lua_State* L = luaL_newstate(); luaL_openlibs(L); luabind::open(L); luabind::module(L) [ luabind::def("hello", &hello) ]; luaL_dostring(L, "hello()"); lua_close(L); return 0; } 编译test.cpp文件: g++ -o test test.cpp -lluabind -llua -lboost_system 运行test文件,如果输出“Hello, world!”则表示Luabind库已经安装成功。 注:以上命令可能需要root权限,如果遇到权限问题,可以在命令前加上sudo。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值