根据《programming in lua》第26章的内容,我做出来的如下:
1.
首先,我的Lua目录为:D:\lua5.1\
环境为 windows ; VC++express edition 2008 ; Lua5.1.4 ; Notepad++
当然,你需要在VC++2008中配置好lua:
这里先不多做解释,假设你已经配置好了。
2.
找到 D:\lua5.1\src
目录下的 lua.c 文件,
将这段代码放到 lua.c 文件中,这就是我们自己定义的C函数:
static int linjunjie (lua_State *L) {
printf("hello junjie /n");
return 1; /* number of results */
}
这里,我们只是简单打印一行文字,没有参数,没有返回值。
然后,我们还需要在 lua.c 中的 main 函数中添加我们的自定义函数(也可以称之为“注册”),添加完之后,类似下面这样(红色部分为我们添加部分):
int main (int argc, char **argv) {
int status;
struct Smain s;
lua_State *L = lua_open(); /* create state */
lua_pushcfunction(L, linjunjie);
lua_setglobal(L, "linjunjie");
if (L == NULL) {
l_message(argv[0], "cannot create state: not enough memory");
return EXIT_FAILURE;
}
s.argc = argc;
s.argv = argv;
status = lua_cpcall(L, &pmain, &s);
report(L, status);
lua_close(L);
return (status || s.status) ? EXIT_FAILURE : EXIT_SUCCESS;
}
3.
现在代码修改完毕,我们需要重新编译我们的 lua ,方法为
进入VS2008的命令提示,然后执行如下操作:
(到lua5.1目录下,执行etc目录下的luavs.bat批处理,他将替我们编译lua)
D:\lua5.1>d:\lua5.1\etc\luavs.bat
4.
假设第3部没有错误,顺利编译完成之后,这时我们的自定义函数就已经被注册到我们机器中的lua中了,试一下。
在VC++2008中,将lua添加为外部工具。
然后新建一个win32控制台应用程序工程,之后,建立一个文本文件,将
linjunjie()
拷贝进去,然后更改文件名为 linjunjie.lua(这里只要是lua后缀即可),如下所示:
然后选择VC++2008中的 工具->lua,这时IDE底部的输出窗口会打印出如下所示:
这代表我们成功将自定义C函数加入到了我们的lua中
。
- 大小: 61.9 KB
- 大小: 2.4 KB
- 大小: 2.8 KB
- 大小: 9.4 KB
- 大小: 43.8 KB
- 大小: 22.9 KB
- 大小: 42.3 KB
- 大小: 3.3 KB
- 大小: 4.9 KB
分享到:
相关推荐
lua调用c函数库的demo 其中实现了对一个 数组的管理。 注意lua参数与c函数的对应, 如:b=lua_dllb.getarray(a,1) static int getarray(lua_State* L) { NumArray * a=(NumArray*)lua_touserdata(L,1); //对应lua...
在Linux底下,从Lua中调用C函数的一个简单例子。
本人亲自编译通过的程序,如果无法通过只可能是您的编译环境有问题。本人的开发环境:VC++6.0,使用的是Win32 Console Application
NULL 博文链接:https://pirateyk.iteye.com/blog/513811
C++调用Lua函数 以及Lua调用C++函数
主要介绍了Lua教程(二十):Lua调用C函数,本文讲解了C函数作为应用程序的一部分、C函数库成为Lua的模块等内容,需要的朋友可以参考下
关于tolua++的资料太少,这个通过实例让你知道如何通过tolua++和C++交互,简单明了。 通过5个文件来演示这个tolua++版 hello world hello.lua ,hello.h ,hello.pkg ,...这个程序实现了脚本调用C++类的成员函数方法
基本的调用lua变量与函数,实现文本的获取与显示策略,若要改变显示方式,只要修改move()函数即可.
这次说明的了,在VC++ 6.0中怎么样调用一个lua脚本中的有参函数。
delphi7与lua相互调用的例子,基本和法和C调用lua差不多
主要介绍了Lua中调用C语言函数实例,本文先讲解了相关知识,然后给出了调用实例,需要的朋友可以参考下
LUA调用C++经验分享 我们组用lua调用c++库都是通过tolua++这个工具。这几天通过看书查阅资料和与andy等其他同事的讨论,对LUA调用c++库的实现原理...通常来说lua调用C++函数有2种方式,现详述如下: 。。。。。。。。
windows下vs2013编译出来的64位dll,给lua5.3,64位调用dll,我用的是vscode调试测试的,没有问题,不过要注意vscode一定要下载5.3的插件才能支持调试
strokeit调用api函数.lua,strokeit调用api函数.lua,strokeit调用api函数.lua,strokeit调用api函数.lua,
lua调用c++函数的实例,C++工程里使用LUA脚本,lua脚本调用c++工程的函数
现在最新版本lua,lua-5.2.3。
调用Lua的接口的时候需要执行进栈和出栈等重复性工作,这几个文件的目的是打造一个简单易用的接口,让C\C++更方便地使用Lua的函数
6. e14.cpp e15.lua ## lua调用c++函数 7. 文件夹class ## lua调用c++类 堆栈形式 8 文件夹student ## lua调用c++类, table形式 build: works/lua_demo$ ./build.sh e13.cpp e13 tests: works/lua_demo$ lua ...
lua与oc的交互demo,封装了一层luaBridge,开源lua库,lua调用oc的过程
生成lua调用C++函数等