打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在LUA库中添加自己的函数库总结(转)

1.首先下载基于VS的LUA源码,地址为http://luabinaries.luaforge.net/download.html

2.在LIB工程中添加mylib.c文件

3.在文件当中添加如下的代码

  1. #include "lua.h"  
  2. #include "lauxlib.h"  
  3. #include "lualib.h"  
  4. static int myfun(lua_State* L)  
  5. {  
  6.     printf("myfun is succeed!");  
  7.     return 0;  
  8. }  
  9. static const struct luaL_Reg mylib[] =   
  10. {  
  11.     {"myfun",myfun},  
  12.     {NULL,NULL}  
  13. };  
  14. LUALIB_API int luaopen_mylib(lua_State* L)  
  15. {  
  16.     luaL_register(L,"mylib",mylib);  
  17. }  

4。在lualib.h中增加如下定义

  1. #define LUA_MYLIBNAME   "mylib"  
  2. LUALIB_API int (luaopen_mylib) (lua_State *L);  

5.在linit.c,中将

 

  1. static const luaL_Reg lualibs[] = {  
  2.   {"", luaopen_base},  
  3.   {LUA_LOADLIBNAME, luaopen_package},  
  4.   {LUA_TABLIBNAME, luaopen_table},  
  5.   {LUA_IOLIBNAME, luaopen_io},  
  6.   {LUA_OSLIBNAME, luaopen_os},  
  7.   {LUA_STRLIBNAME, luaopen_string},  
  8.   {LUA_MATHLIBNAME, luaopen_math},  
  9.   {LUA_DBLIBNAME, luaopen_debug},  
  10.   {LUA_MYLIBNAME,luaopen_mylib},  
  11.   {NULL, NULL}  
  12. };  

最后增加一行,如上图所示

6.更新include目录的lualib.h文件

7.测试如下

  1. #include "stdafx.h"  
  2. extern "C" {  
  3. #include "lua.h"  
  4. #include "lualib.h"  
  5. #include "lauxlib.h"  
  6. }  
  7. int main()  
  8. {  
  9.     lua_State *L = luaL_newstate();  
  10.     lua_cpcall(L, luaopen_base, 0);  
  11.     lua_cpcall(L, luaopen_io, 0);  
  12.     lua_cpcall(L, luaopen_string, 0);  
  13.     lua_cpcall(L,luaopen_mylib,0);  
  14.     const char *buf = "mylib.myfun()";//注意调用规则  
  15.     //luaL_loadstring(L, buf);  
  16.     int s = luaL_loadstring(L, buf);  
  17.     if ( s==0 )  
  18.     {  
  19.         s = lua_pcall(L, 0, LUA_MULTRET, 0);  
  20.     }  
  21.     lua_close(L);  
  22.     getchar();  
  23.     return 0;  
  24. }  

ok

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
自己写 lua module (Building lua module)
lua调用C++写的DLL实现“热更新”
用C语言扩展lua模块(入门)
如何在C++中集成LUA脚本(LuaWrapper For C++篇)
luajit FFI LUA脚本中怎样调用C自己定义的函数
VC知识库文章
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服