- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
找了几天的资料,关于lua调用C++类,无非就是千篇一律的东西,没实际性内容,并且本菜又不喜欢luaplus,luabind,luaTinks等之类的二次封装(一会儿C,一会儿C++,说不定编译狂出错)
我是用来解释脚本的,不是用来搞游戏的。这么高深的东西,咱变通下。
在C函数里调用类函数,在注册就可以。直接看代码
- // luatest.cpp : 定义控制台应用程序的入口点。
- #include "stdafx.h"
- extern "C" {
- #include "lua.h"
- #include "lauxlib.h"
- #include "lualib.h"
- };
- #include "Cceshi.h" //我们的测试类,里面就一个print函数。
- #include "stdio.h"
- #include <iostream>
- using namespace std;
- static int gxm(lua_State *L) //每个注册的C函数都应该遵守这样的调用
- {
- int n = lua_gettop(L);
- double sum;
- int i;
- for (i=1;i<=n;i++)
- {
- sum+=lua_tonumber(L,i);
- }
- if (sum>100)
- {
- cout<<"累加超过100"<<endl;
- }
- lua_pushnumber(L,sum/n);
- lua_pushnumber(L,sum);
- Cceshi gxm2;
- gxm2.gxm1();
- return 2;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- //初始化Lua
- lua_State* L = luaL_newstate();
-
- //调用基本库
- luaL_openlibs(L);
- lua_register(L,"累加",gxm);
- luaL_dofile(L,"C:\\ceshi.lua");
- //关闭对象
- lua_close(L);
- return 0;
- }
复制代码 很简单吧。我们的ceshi.lua写这样的。
- avg,sum=累加(10,20,30,40,50)
- print("The avg is ",sum)
- print("The sum is ",avg)
复制代码 |
|