鍒氬紑濮嬪涔燣uabind錛屾墍浠ョ畻鏄竴浜涚畝鍗曠殑絎旇銆?br> 浣跨敤Luabind鍓嶈鍖呭惈鐩稿叧鐨勫ご鏂囦歡錛屽紩鍏uabind鍛藉悕絀洪棿銆傛敞鎰忓寘鍚玪uabind.hpp騫朵笉浼氳嚜鍔ㄥ寘鍚玪ua鐩稿叧澶存枃浠訛紝瑕佹牴鎹渶瑕佽嚜宸辨坊鍔犮?/span>
#include <luabind/luabind.hpp>
extern "C"
{
#include <lua.h>
#include <lualib.h>
}
using namespace luabind;
鍋囪鏈変互涓嬬被瀹氫箟錛?br>
1 // TestClass.h
2 class TestClass
3 {
4 public:
5
6 TestClass(string s);
7
8 static TestClass* Singleton();
9
10 void Print();
11
12 private:
13
14 static TestClass* mSingleton;
15
16 string mString;
17 };
18
19 // TestClass.cpp
20 TestClass* TestClass::mSingleton = NULL;
21
22 TestClass::TestClass(string s)
23 {
24 mString = s;
25 }
26
27 TestClass* TestClass::Singleton()
28 {
29 if (TestClass::mSingleton == NULL)
30 {
31 return new TestClass("Hello");
32 }
33 else
34 {
35 return mSingleton;
36 }
37 }
38
39 void TestClass::Print()
40 {
41 cout << mString << endl;
42 }
鍒涘緩涓涓猙indClass鍑芥暟錛岀敤鏉ヨ繘琛屽鍑虹被鐨勭浉鍏沖伐浣?/span>
1 int bindClass(lua_State* L)
2 {
3 open(L);
4
5 module(L)
6 [
7 class_<TestClass>("TestClass")
8 .def(constructor<string>())
9 .def("Print", &TestClass::Print),
10 def("Singleton", TestClass::Singleton) // 璇鋒敞鎰弒tatic鎴愬憳鍑芥暟Singleton()瀵煎嚭鏃跺拰闈為潤鎬佹垚鍛樺嚱鏁扮殑鍐欐硶鍖哄埆錛?br> // 鍜屽叏灞鍑芥暟鐨勫鍑哄啓娉曚竴鏍楓?/span>
11 ];
12
13 return 0;
14 }
def妯$増綾諱腑瀹氫箟瀵煎嚭鍑芥暟鏃訛紝鎴愬憳鍑芥暟鎸囬拡涓瀹氳鐢ㄥ彇鍦板潃絎?/span>&錛?span style="COLOR: #000000">濡俆estClass::Print()銆?span style="FONT-FAMILY: 寰蔣闆呴粦">鑰岃嚜鐢卞嚱鏁板拰闈欐佸嚱鏁板彲鐢ㄥ彲涓嶇敤錛屽TestClass::Singleton()銆?br> 鐜板湪灝卞彲浠ュ啓浠g爜嫻嬭瘯浜嗭細
// test.lua
1 testClass = Singleton()
2 testClass:Print()
// main.cpp
1 int _tmain(int argc, _TCHAR* argv[])
2 {
3 TestClass testClass("Hello from lua.");
4
5 lua_State* L = luaL_newstate();
6
7 init(L);
8
9 luaL_dofile(L, "add.lua");
10
11 lua_close(L);
12
13 return 0;
14 }
15
榪愯緇撴灉錛?/span>


]]>