我正在编写一些基本代码来试验 Angelscript,但是我什至无法让最简单的功能正常工作。这是基本的代码块:
class Engine {
public:
void print(std::string&);
};
Engine::print(std::string &msg)
{
cout<<msg.c_str()<<endl;
}
下面是为 Angelscript 初始化和注册 C 函数的实际代码:
int r;
asIScriptEngine *engine = asCreateScriptEngine(ANGELSCRIPT_VERSION);
r = engine->SetMessageCallback(asMETHOD(Engine,MessageCallback), this,asCALL_THISCALL);
assert( r >= 0 );
RegisterStdString(engine);
r = engine->RegisterObjectType("Engine", 0, asOBJ_APP_CLASS_CONSTRUCTOR);
cout<<"r was: "<<r<<endl;
assert( r >= 0 );
r = engine->RegisterObjectMethod("Engine","void print(const string &in)", asMETHOD(Engine,print), asCALL_THISCALL);
assert( r >= 0 );
起初我没有函数“RegisterObjectType()”,因此运行程序会抛出“'Engine' is not a valid type”错误,即使它是一个有效的类。所以我找到了一个名为“RegisterObjectType()”的函数并按照上面的方法实现了它,现在它在最后一个字段的“RegisterObjectType()”函数上抛出了一个“Invalid Flag”错误。我已经尝试了所有的类标志,它仍然抛出这个错误。
将类方法注册到 Angelscript 中的正确方法是什么?文档示例似乎不起作用。它似乎剪掉了除了它正在解释的实际功能之外的所有内容,例如,它没有提示使用类方法注册代码注册对象类型。或者不是很清楚。
我应该提到,遇到的所有错误都是 angelscript 库抛出的运行时错误,而不是编译器错误。
谢谢!