![]() |
Common Language Extension(CLE) |
|||
For c# calls lua, here presents a new method, which ues cle developed by srplab. A function “Add” is defined in lua which returns the sum of two input integers, the function also call c# method “Show” to print the result. There are three steps: 1. Init cle, create service group, and create service. 2. Create interface object, and defines a new function “Add” of it. 3. Write function code of Add.
require "libstarcore"
--Step1 : Init cle, create service group,
and create service
Service =
libstarcore._InitSimple("AddFunctionService","123",0,0);
--Step2 : Create interface object, and
define function Add
Obj=Service:_New("TestClass");
--Step3 : Add function code
function Obj:Add(x,y)
--call back to script function
self:Show(x+y);
return
x+y;
end
For c# code calls the above lua code, there are four steps; 1. Init cle, create service group, import lua file, and create service. 2. Define extends class of StarObjectClass, which implement callback function “Show”. 3. Create Instance of object “TestClass” defined in lua file. 4. Call function “Add”.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using star_csharp;
namespace csharp_call
{
class MyObjectClass : StarObjectClass{
//--Step2
: Define extends class of StarObjectClass and implements callback function “Show”.
public void
Show( StarObjectClass self,int para )
{
Console.WriteLine("print from java call back "+para);
return;
}
public MyObjectClass(StarObjectClass
srcobj):base(srcobj){
}
}
class Program
{
static
void
{
//--Step1
: Init cle, create service
group,import lua file, and create
service
StarCoreFactory
starcore= StarCoreFactory.GetFactory();
StarServiceClass
Service=starcore._InitSimple("test","123",0,0," AddFunctionService.lua?script=lua");
//--Step3 : Create Instance of
object “TestClass” defined in lua.
MyObjectClass
a = new MyObjectClass( Service._GetObject("TestClass")._New() );
//--Step4
: call function “Add”.
Console.WriteLine("Add
returns : " + a._Call("Add", 12, 34));
starcore._ModuleExit();
}
}
}
|
| examples code download |
| Copywright (C) 2005 www.SRPLab.com(Star-River Platform Lab.) All Rights Reserved | Email:support@srplab.com |