首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angelscript类方法注册

Angelscript类方法注册
EN

Stack Overflow用户
提问于 2011-08-08 18:07:30
回答 1查看 1.5K关注 0票数 0

我正在写一些基本的代码来尝试使用Angelscript,但是我不能让最简单的函数正常工作。下面是基本的代码块:

代码语言:javascript
复制
class Engine {
    public:
       void print(std::string&);
};

Engine::print(std::string &msg)
{
    cout<<msg.c_str()<<endl;
}

下面是为Angelscript初始化和注册C函数的实际代码:

代码语言:javascript
复制
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()‘函数上抛出了一个”无效标志“错误。我已经尝试了所有的类标志,但仍然抛出这个错误。

将类方法注册到Angelscript的正确方法是什么?文档示例似乎不起作用。它似乎剪掉了所有东西,除了它正在解释的实际函数,例如,它没有提示使用类方法注册代码注册对象类型。或者说它不是很清楚。

我要指出的是,遇到的所有错误都是由angelscript库抛出的运行时错误,而不是编译器错误。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2011-10-29 05:22:44

as_OBJ_APP_CLASS_CONSTRUCTOR不是正确的标志,它应该与其他as_OBJ_APP结合使用...旗帜。例如,检查以下内容(有点过时),以及注册对象类型的方法说明:http://www.darawk.com/code/CoHClient/Angelscript/sdk/docs/articles/register_object.html

当然,手册是你最好的朋友:http://www.angelcode.com/angelscript/sdk/docs/manual/index.html (使用Angelscript->注册应用程序接口->注册对象类型)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6980548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档