文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>c调用lua...

c调用lua...

时间:2010-08-09  来源:taobao755624068

VC要编译LUA文件必须先配置VC编程环境。。我用的是VC6.0,lua 5.1.4版

首先将lua的"lua.h"  ,"lualib.h", "lauxlib.h" 这三个放在vc程序include文件夹下

然后将lua的lua5.1.lib放在lib文件夹下就OK了

下面看看我写的一个小例子:

a.cpp

view plaincopy to clipboardprint?
#include "windows.h"  
 
extern "C"{   
#include "lua.h"    
#include "lualib.h"  
#include "lauxlib.h"   
}  
 
 
#pragma   comment(lib,"lua5.1.lib")  
 
 
lua_State * L;  
 
static int clib(lua_State *L)   //给lua调用的c函数必须定义成static int XXX(lua_State *L)  
{  
    char   path[MAX_PATH];   
    GetCurrentDirectory(MAX_PATH,path);  
    lua_pushstring(L,path);  
    return 1;   //为什么要返回1?这是有依据的,该函数把结果压入了栈,lua调用该函数将从栈中  
//取1个结果  
}  
 
 
int main ( int argc, char *argv[] )  
{  
    int sum;  
    //创建一个指向lua解释器的指针  
    L = luaL_newstate();  
    //加载lua标准库  
    luaL_openlibs(L);  
         //注册C++函数  
    lua_register(L,"clib",clib);  
    //加载脚本  
    luaL_dofile(L,"4.lua");  
    //调用函数  
    lua_getglobal(L,"run");  
         //运行函数并把结果压入栈  
    lua_pcall(L,0,0,0);  
    //关闭并释放资源  
    lua_close(L);  
    return 0;  

#include "windows.h"

extern "C"{
#include "lua.h" 
#include "lualib.h"
#include "lauxlib.h"
}


#pragma   comment(lib,"lua5.1.lib")


lua_State * L;

static int clib(lua_State *L)   //给lua调用的c函数必须定义成static int XXX(lua_State *L)
{
 char   path[MAX_PATH];
 GetCurrentDirectory(MAX_PATH,path);
 lua_pushstring(L,path);
 return 1;   //为什么要返回1?这是有依据的,该函数把结果压入了栈,lua调用该函数将从栈中
//取1个结果
}


int main ( int argc, char *argv[] )
{
 int sum;
 //创建一个指向lua解释器的指针
 L = luaL_newstate();
 //加载lua标准库
 luaL_openlibs(L);
         //注册C++函数
  lua_register(L,"clib",clib);
 //加载脚本
 luaL_dofile(L,"4.lua");
 //调用函数
 lua_getglobal(L,"run");
         //运行函数并把结果压入栈
 lua_pcall(L,0,0,0);
 //关闭并释放资源
 lua_close(L);
 return 0;
}

4.lua文件

view plaincopy to clipboardprint?
function run()  
     print("call running from c")  
     print(clib())  
end 
function run()
     print("call running from c")
     print(clib())
end
 

这个例子实现了C与lua的相互调用。。另外,还可以把我前面一篇lua调用C dll的内容整合在一起。。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bhwst/archive/2010/07/29/5774746.aspx

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载