⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 luacppwrapper.cpp

📁 lua语言windows开发环境
💻 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 + -