C++ 与AngelScript交互

AngelScript 下载地址:AngelScript - AngelCode.com

1.选择版本下载解压图中的两个文件夹 

2.进入AngelScript\projects\msvc2022目录打开VS工程编译

 

编译成功后lib目录会有一个angelscript64d.lib文件

将include文件夹添加到你的项目包含里面

项目属性\vc++目录\包含目录

将lib文件夹添加到你的库目录里面

项目属性\VC++目录\库目录

将add_on重命名Plugins(不用重命名看自己)文件夹添加到项目里面

#include <iostream>
#include <angelscript.h>
#include "Plugins/scriptbuilder/scriptbuilder.h"
#include "Plugins/scriptstdstring/scriptstdstring.h"

using namespace std;

void AngelScriptMessage(asSMessageInfo* msg, void* param) {

	if (msg->type == asMSGTYPE_ERROR) {
		cout << "Error:[" << msg->message << "]"  << "Row:[" << msg->row << "]" << endl;
	}

	if (msg->type == asMSGTYPE_INFORMATION) {
		cout << "Info:[" << msg->message << "]"  << "Row:[" << msg->row << "]" << endl;
	}

	if (msg->type == asMSGTYPE_WARNING) {
		cout << "Warning:[" << msg->message << "]" << "Row:[" << msg->row << "]" << endl;
	}
}

void print(string msg) {
	cout << msg << endl;
}

int main(){

asIScriptEngine* engine;
asIScriptContext* ctx;

//创建脚本环境
engine= asCreateScriptEngine(ANGELSCRIPT_VERSION);
//消息回调 脚本执行错误之类的
int r = engine->SetMessageCallback(asFUNCTION(AngelScriptMessage), 0, asCALL_CDECL);
if (r < 0) {
	engine->Release();
}
//AS 没有自己的string需要将手动注册进去
RegisterStdString(engine);

//创建上下文
ctx = engine->CreateContext();
//注册全局函数
engine->RegisterGlobalFunction("void print(string msg)",  asFUNCTION(print), asCALL_CDECL);
//脚本加载器(头文件在add_on文件夹)
CScriptBuilder build;
//创建新的模块环境
build.StartNewModule(engine,"Mod");
//脚本文件所有路径
build.AddSectionFromFile("E:\\main.as");
build.BuildModule();

asIScriptModule* mod = engine->GetModule("Mod");
//找到脚本main()函数
asIScriptFunction* fn = mod->GetFunctionByDecl("void main()");
ctx->Prepare(fn);
//执行脚本
ctx->Execute();

//释放
ctx->Release();
engine->Release()

return 0;
}

AngelScript脚本

void main(){
    print("666");
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最复杂的简单

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值