混合语言混合类
来源:互联网 发布:什么软件洗车便宜 编辑:程序博客网 时间:2024/04/29 20:53
基于starcore平台,支持lua/python/c++无缝混合编程和调用
用lua定义一个实体类,python扩展该类,然后采用C++进行调用
1.用lua定义实体类TestObjectClass,文件test_dyna1.lua,如下:
require "libstarcore"
Service=libstarcore._InitSimple("RemoteCallServer","123",0,0)
SrvItem = Service:_CreateSysRootItemEx("TestItem","")
a = Service:_NewGlobal(SrvItem,"TestObjectClass")
function a:Lua_Add( x, y )
return x+y
end
2.用python扩展该类TestObjectPythonClass,文件:test_dyna1.py
import sys
import os
if sys.platform == "win32" :
sys.path.append(os.getenv('windir')+"//system32")
else :
sys.path.append("/usr/lib")
import starpy
Service = SrvGroup=starpy._InitSimple("RemoteCallServerPython", "123",0,0,"test_dyna1.lua")
SrvItem = Service._CreateSysRootItemEx("TestItem","")
a = Service.TestObjectClass._NewGlobal(SrvItem,"TestObjectPythonClass")
def a_Python_Add( self, x,y ) :
return x+y
a.Python_Add = a_Python_Add
3.用C++进行调用
#include "vsopenapi.h"
int main(int argc, char* argv[])
{
VS_CORESIMPLECONTEXT Context;
class ClassOfSRPInterface *SRPInterface;
void *Object;
//初始化
SRPInterface = VSCore_InitSimple(&Context,"test","123",0,0,NULL,0,"test_dyna1.py?script=python",NULL);
//创建类TestObjectPythonClass的实例
Object = SRPInterface ->MallocObject(NULL,0,SRPInterface ->GetIDEx(SRPInterface ->GetObjectEx(NULL,"TestObjectPythonClass")),0,NULL);
//调用lua函数
SRPInterface ->LuaPushNumber(123);
SRPInterface ->LuaPushNumber(234);
SRPInterface ->ExecNameScript(Object,"Lua_Add",2,1);
printf("Lua_Add = %f/n",SRPInterface ->LuaToNumber(-1));
SRPInterface ->LuaPop(1);
//调用python中定义的函数
SRPInterface ->LuaPushNumber(567);
SRPInterface ->LuaPushNumber(789);
SRPInterface ->ExecNameScript(Object,"Python_Add",2,1);
printf("Python_Add = %f/n",SRPInterface ->LuaToNumber(-1));
SRPInterface ->LuaPop(1);
SRPInterface -> Release();
VSCore_TermSimple(&Context);
return 0;
}
- 混合语言混合类
- 混合
- 混合
- 混合
- 混合
- 混合
- 混合
- R语言-混合型数据聚类
- R语言-混合型数据聚类
- 混合语言编程
- OC语言混合编辑
- 多语言混合开发
- 汇编C语言混合编程
- 编译语言 解释语言 混合语言
- 四则混合运算类
- Delphi 与 FORTRAN语言的混合编程
- 汇编语言与C语言的混合使用
- 汇编语言与C语言的混合使用
- 【算法】中文分词古与今
- 快速学习和高效使用MATLAB的几个建议(ZZ)
- Mongodb的优点与不足
- 6410 LCD驱动移植
- 比较有创意的app
- 混合语言混合类
- 分手后男人VS女人,该做的10件事情!
- [decoration]
- 成功移植DHCP客户端到mini2440,终于可以上网了
- Memcached 集群架构问题归纳
- POJ1001 Exponentiation
- Firefox启动慢等问题解决办法
- POJ 3461 Oulipo
- 【图形学】直线扫描算法之---bresenham改进算法(任何斜率,任何方向)