游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8227|回复: 4

让Lua调用C++函数

[复制链接]

0

主题

386

帖子

400

积分

中级会员

Rank: 3Rank: 3

积分
400
QQ
发表于 2008-10-2 12:00:00 | 显示全部楼层 |阅读模式
看到有人提问这个,当时自己用Lua时也有类似问题,所以贴出来供大家参考。

头文件要这样引用


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

定义Lua
lua_State*           L;

初始化Lua

int InitLua()
{
                L = lua_open();
                luaopen_base(L);
                luaopen_table(L);
                lua_cpcall(L, luaopen_io, 0);
                luaopen_string(L);
                luaopen_math(L);

          以上是初始化 Lua

                RegFunction(); //注册函数,这个函数在下面。

luaL_dofile(L, "C:\\Lua.txt"); //这个是执行Lua文件

                 return 1;
}

如果相让Lua能访问C++函数就先得把C++函数注册进Lua.
注册方法:

int RegFunction()
{
                lua_register(L,"AddP/*这个是在Lua中调用时使用的函数名*/",Add/*这个是在程序中定义的C++函数的名称*/);

       
        return 1;
}

比如函数Add是做加法运算并输出在屏幕上

int Add(lua_State *L) //括号里只能有这一个参数
{
long a,b,c;
a=lua_tonumber(L,1); //取第一个参数 lua_tonumber()函数是取数字
b=lua_tonumberL,2);   //取第二个参数 lua_tostring()函数是取字符串
c=a+b;
print(c);
return 1;
}

在main()函数中执行InitLua()函数。

如果c:\lua.txt的内容是:
AddP(1,2);
那么就会在控制台中显示"3"

不难吧。。。 [em1] [em1] [em1] [em1] [em1]

0

主题

386

帖子

400

积分

中级会员

Rank: 3Rank: 3

积分
400
QQ
 楼主| 发表于 2008-10-2 12:02:00 | 显示全部楼层

Re:让Lua调用C++函数

这些代码是在发贴时写的,我自己没有调试,不知道有没有Error,谁发现有错告诉我下。。。

3

主题

3643

帖子

3650

积分

论坛元老

Rank: 8Rank: 8

积分
3650
QQ
发表于 2008-10-6 10:57:00 | 显示全部楼层

Re: Re:让Lua调用C++函数

blueicexfx: Re:让Lua调用C++函数

这些代码是在发贴时写的,我自己没有调试,不知道有没有Error,谁发现有错告诉我下。。。

   这是大毛病 不编译就发东西

0

主题

386

帖子

400

积分

中级会员

Rank: 3Rank: 3

积分
400
QQ
 楼主| 发表于 2008-10-6 16:33:00 | 显示全部楼层

Re:让Lua调用C++函数

发的时候没有编译器...

12

主题

95

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
发表于 2008-10-8 13:04:00 | 显示全部楼层

Re:让Lua调用C++函数

建议用luaplus来做
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-21 04:19

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表