扩展Lua库

 

 

能调试成功,全部归功于dangchanghe博客中下面链接的教程以及他的耐心解答,Thanks!

 

http://blog.csdn.net/dch4890164/archive/2009/08/14/4447439.aspx

 

 

之前曾经写过一个参照《programming in lua》书中的方法的quick & dirty的调用自己写的C函数的方法,现在的重点是自己实现一个和Lua中的其他库一样的完全自己的库,下面让我们来看看如何向lua中添加自己的C函数库吧。

 

 

首先,我的环境是:VC++2008 EXPRESS ; LUA5.1.4

 

下面看一下具体操作步骤:

 

 

1.首先,我们需要写一个自己的库文件,像下面这样:

 

 

#include <stdlib.h>
#include "lua.h"  
#include "lauxlib.h"  
#include "lualib.h"  

static int myfun(lua_State* L)  
{  
    printf("myfun is succeed!");  
    return 0;  
}  
static const struct luaL_Reg mylib[] =   
{  
    {"myfun",myfun},  
    {NULL,NULL}  
};  
LUALIB_API int luaopen_mylib(lua_State *L)  
{  
    luaL_register(L,"mylib",mylib);  
    return 0;//没有返回值
}

 

 

我们将它保存为mylib.c,然后放到lua/src目录下。

 

 

2.我们需要在lua/src目录下的lualib.h中添加我们定义的函数库的宏,像下面这样:

 

 

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

 

 

添加这句之后,我们把lua/src目录下的这个lualib.h 再拷贝一份到include目录下,覆盖即可。

 

 

3. 然后我们要修改 lua/src目录下的linit.c文件,将下面这句添加的lualibs这个数组中(在{null,null}之前):

 

{LUA_MYLIBNAME, luaopen_mylib},

 

 

4.打开mak.vs2005目录下的lua5.1.sln,然后右键点击lua5.1_dll导入我们自己的库mylib.c( 至少长河让我明白了lib和dll的区别 -_-!!! 因为我们现在需要用到的是动态库!),然后生成解决方案,如果没有错误的话,在我们的跟目录下会生成bin,obj等文件夹,我们到bin文件夹下,这里会有我们需要的lua5.1.exe

 

双击打开,然后输入如下语句:

 

require "mylib"

mylib.myfun()

 

如果它输出

 

myfun is succeed!

 

这代表我们已经成功将我们自己 mylib库添加到了Lua中!

 

 

 (2005的工程可以成功,但是2008的工程编译总是出错,Lua5.1.exe总是无法生成,有一个

 

LINK : fatal error LNK1104: 无法打开文件“iupscripter.lib”

 

的错误,目前我只是使用的lua包中的那个2005的工程)

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值