Я пишу некоторый базовый код для экспериментов с 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, а не ошибки компилятора.
Спасибо!