📄 luacppwrapper.cpp
字号:
// LuaCppWrapper.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "LuaPlusHelper.h"
void LOG(const char* message)
{
printf("In global function: %s\n", message);
}
class Logger
{
public:
void LOGMEMBER(const char* message)
{
printf("In member function: %s\n", message);
}
virtual void LOGVIRTUAL(const char* message)
{
printf("In virtual member function: %s\n", message);
}
Logger()
{
printf("Constructing(%p)...\n", this);
v = 10;
}
virtual ~Logger()
{
printf("Destructing(%p)...\n", this);
}
Logger(int n)
{
printf(" -- Constructing[%d](%p)...\n", n, this);
}
Logger(Logger* logger)
{
printf(" -- Constructing[%p](%p)...\n", logger, this);
logger->LOGMEMBER("-- 0000---0000\n");
}
public:
int v;
};
void LOG2(const char* message, LuaObject xlogger)
{
Logger* logger = (Logger*)xlogger.GetUserData();
printf("In global function: %s\n", message);
printf("---%d\n", logger->v);
logger->LOGMEMBER(message);
}
int _tmain(int argc, _TCHAR* argv[])
{
{
LuaStateOwner state;
Logger logger;
LuaModule(state)
.def("LOG", LOG)
.def("LOGMEMBER", logger, &Logger::LOGMEMBER)
.def("LOGVIRTUAL", logger, &Logger::LOGVIRTUAL)
.def("LOG2", LOG2);
LuaClass<Logger>(state)
.create("Logger")
.create<int>("Logger2")
.create<Logger*>("Logger3")
.destroy("Free")
.destroy("__gc")
.def("lm", &Logger::LOGMEMBER)
.def("lv", &Logger::LOGVIRTUAL);
state->GetGlobals().SetNumber("a", 123456);
int a = state->GetGlobal("a").GetInteger();
printf(" a = %d\n", a);
state->DoString("LOG('Hello')");
state->DoString("LOGMEMBER('Hello')");
state->DoString("LOGVIRTUAL('Hello')");
state->DoString(
"print('=========');"
"print(Logger, _G['MetaClass_.?AVLogger@@']);"
"l = Logger();"
);
state->DoString(
"print(l);"
"print(l.lv);"
"print(l.lm);"
);
state->DoString("print('=========');");
state->DoString("l:lm('Hhhhh');");
//state->DoString("l:lv('Eeeee');"); //--虚函数不能用!!!
state->DoString("--l:Free();l=nil;");
state->DoString("print('=========');");
state->DoString("LOG2('SSSS', l)");
state->DoString("print('=========');");
state->DoString("k = Logger2(10);k:lm('World2');k:Free();");
state->DoString("print('=========', l);");
state->DoString("h = Logger3(l);h:lm('World!!!!!!!!!');");
LuaFunction<int> l = state->GetGlobal("LOG");
l("DDDDDD");
}
system("Pause");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -