Luaglue 说明文档.DOCVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Luaglue 说明文档.DOC

Luaglue 说明文档 版本 时间 作者 简要 0.0.1 2014-10-17 liyong(zouliyong765@) 初始化 1 介绍 Luaglue 是一个帮助你简易地导出C++类和函数到lua的库, 同时帮助你管理C++和lua共享对象的生命周期. 使你在开发C++和lua协作的项目更加地简单快捷。 Luagule基于lua5.2, C++11编写, 在必要地编译器平台下你需要引入boost库. Luaglue利用模板原编程技术实现, 所有功能都在头文件中. 这意味着, 你不需要额外地将luaglue编译成库, 你只需要将头文件包含在你的项目中即可方便地使用。 同时也意味着你源码的编译时间也会随着你引用的源码文件数的增加而显著增加, 因此建议你把所有的需要注册的东西放到一个cpp文件里面. Luaglue 遵循 MIT 协议发布. 虽然我们力求完美, 但由于前期开发和测试工作的局限, luaglue难免存在bug和不合理之处。 希望后期能有更多地人能参与开发和维护, 共同完善luaglue。s 2 功能 Luaglue支持: * C++函数导出到Lua * C++类导出到Lua * C++对象导出到Lua * C++持有Lua对象 * C++和Lua共享对象生命周期的管理 3 可移植性 Luaglue 基于C++11开发, 并依赖于shared_ptr和function模板类(C++11的std或boost, 如果你的编译器不支持这两个模板类, 则需要引入boost)。 理论上在任何支持C++11的编译器平台并适当引入boost辅助都可移植。 Luaglue 已经通过下面的编译器环境的测试: GCC 4.3 (MinGW) Apple LLVM version 5.0 4 安装luaglue Luaglue库只有头文件, 故无需编译, 直接拷贝到项目中就可使用。 或者将其拷贝到/usr/local/lib中。 但由于luaglue需要引用lua头文件(头文件中包含如下语句), 故你需要将lua头文件目录加入到你编译器的CPLUS_INCLUDE_PATH环境变量中或添加到-I选项。 extern C { #include lua.h #include lualib.h #include lauxlib.h } 5 基本使用 请先参考4 安装luaglue, 然后添加luaglue头文件luaglue.hpp到所需的源文件中。 同时根据实际情况链接对应的lua库文件。 例: 将luaglue的所有头文件放到/usr/local/include/luaglue下 将lua头文件放到/usr/local/include下 将lua库文件放到/usr/local/lib下 下面示例未特殊说明情况下, 都使用该环境。 5.1 Hello World 编写源文件, $ vi helloworld.cpp 1 #include iostream 2 #include luaglue/luaglue.hpp // include the luaglue header file 3 4 static void helloworld(void) 5 { 6 std::cout hello world std::endl; 7 } 8 9 extern C int luaopen_helloworld(lua_State *L) 10 { 11 luaglue::scope(L) // export the symbols to _G 12 [ 13 luaglue::def(helloworld, helloworld) // export the function helloworld name as helloworld 14 ]; 15 16 return 0; 17 } 18 编写Makefile, vi Makefile 1 targets = helloworld.so 2 CXXFLAGS = -std=c++11 -I/usr/local/include 3 #LDFLAGS = -L/usr/local/lib -llua 4 LDFLAGS = -undefined dynamic_lookup 5 6 all: $(targets) 7 8 helloworld.so: helloworld.cpp 9 g++ -o $@ -fpic -shared $(CXXFLAGS) $(LDFLAGS)

文档评论(0)

thl1006 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档