Регистрация метода класса Angelscript - PullRequest
0 голосов
/ 08 августа 2011

Я пишу некоторый базовый код для экспериментов с Angelscript, однако я не могу заставить даже самые простые функции работать правильно.Вот основной блок кода:

class Engine {
    public:
       void print(std::string&);
};

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

Вот фактический код, который инициализирует и регистрирует функции C для Angelscript:

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 'не является допустимым типом ", даже если это был допустимый класс".Поэтому я нашел функцию с именем «RegisterObjectType ()» и реализовал ее, как описано выше, и теперь она выдает ошибку «Недопустимый флаг» в функции «RegisterObjectType ()» в последнем поле.Я перепробовал все флаги классов и все равно выдает эту ошибку.

Каков правильный метод регистрации метода класса в Angelscript?Пример документации, похоже, не работает.Кажется, что вычеркнуто все, кроме самой функции, которую она объясняет, например, она не намекает на регистрацию типов объектов с помощью кода регистрации метода класса.Или это было не очень понятно.

Я должен упомянуть, что все ошибки - это ошибки времени выполнения, генерируемые библиотеками angelscript, а не ошибки компилятора.

Спасибо!

1 Ответ

0 голосов
/ 29 октября 2011

Флаг 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-> Регистрация интерфейса приложения)-> Регистрация типа объекта)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...