登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

聊天机器

Chatbot's private blog

 
 
 

日志

 
 

【转】vc执行lua脚本办法之一  

2010-10-11 15:12:49|  分类: 程序理论 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
转自baidu空间。
1,去lua.org上下载lua5.1.4的压缩包吧。然后解压到本地。
2,你会发现中间有若干make文件还有一个批处理文件还有若干readme文件。你甭理他。忽略。
3,打开vc创建一个空的静态库工程,定义工程名为lua5.1.4,然后把src目录下的所有.c和.h文件一股脑全部导入到工程中
4,直接开始编译。我竟然编译过了。nnd奇迹啊奇迹。啥都不用改。然后就在debug目录下就有lua5.1.4.lib静态库文件了。
5,开始在lua5.1.4的根目录下创建一个sample测试工程代码,记得是console命令行的代码。
首先在sample目录下创建add.lua文件。文件内容就三行
function add ( x, y )
--sample lua
fun1();
print("print from lua!");
return x + y;
end
下面是cpp文件的内容:记得如果是vc.net下的main主函数跟vc6的不一样不要全copy过去,要改下。
//简单的a+b的计算,计算的主函数在add.lua脚本中,脚本又调用cpp文件中的fun1函数
#include "stdafx.h"
extern "C"{
#include "..\\..\\lua-5.1.4\\src\\lauxlib.h"
#include "..\\..\\lua-5.1.4\\src\\lualib.h"
}
#pragma comment(lib,"..\\..\\debug\\lua5.1.4.lib")
lua_State * L;
int fun1(lua_State *L)
{
printf("function from cpp!\n");
return 0;
}
int luaadd ( int x, int y )
{
int sum;
//函数名
lua_getglobal(L, "add");
//第一个参数压栈
lua_pushnumber(L, x);
//第二个参数压栈
lua_pushnumber(L, y);
//调用函数
lua_call(L, 2, 1);
//得到返回值
sum = (int)lua_tonumber(L, -1);
lua_pop(L, 1);
return sum;
}
int main ( int argc, char *argv[] )
{
int sum;
//创建一个指向Lua解释器的指针。
L = lua_open();
lua_pushcfunction(L, fun1);
lua_setglobal(L, "fun1"); //添加注册c的fun1函数
//函数加载Lua库
luaL_openlibs(L);
//加载脚本
luaL_dofile(L,"add.lua");
//调用函数
sum = luaadd( 10, 11);
// print the result
printf( "The sum is %d\n", sum );
//关闭 释放资源
lua_close(L);
printf( "Press enter to exit!" );
getchar();
//printf("Hello World!\n");
return 0;
}
好了自此可以运行了。
  评论这张
 
阅读(2435)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018