2011-08-08 3 views
0

Angelscript를 실험하기 위해 몇 가지 기본 코드를 작성하고 있지만, 가장 간단한 함수도 제대로 작동하지는 않습니다.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); 

을 제 I 함수 "RegisterObjectType()"를 갖고 있지 않은 현재는, 따라서 프로그램을 실행하면 유효한 클래스 였지만 " '엔진은 유효한 유형이 아닙니다.'라는 오류가 발생합니다. 그래서 "RegisterObjectType()"라는 함수를 발견하고 위와 같이 구현 한 다음 마지막 필드의 'RegisterObjectType()'함수에 "유효하지 않은 플래그"오류가 발생합니다. 모든 클래스 플래그를 시도했지만 여전히이 오류가 발생합니다.

Angelscript에 클래스 메소드를 등록하는 적절한 방법은 무엇입니까? 설명서 예제가 작동하지 않는 것 같습니다. 설명하는 실제 함수를 제외한 모든 것을 잘라내는 것처럼 보입니다. 예를 들어 클래스 메소드 등록 코드에 객체 유형을 등록하는 것에 대한 힌트는 없습니다. 또는 그것에 대해 아주 명확하지 않았습니다.

모든 오류는 angelscript 라이브러리에서 발생하는 런타임 오류이며 컴파일러 오류는 아닙니다.

감사합니다.

답변

0

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- 사용)
관련 문제