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");
}