0

そのため、Angelscript は、処理できる機能とかなり矛盾しているように見えます。私はこうしてグローバル関数を宣言しようとしています:

scrpEngine->RegisterGlobalFunction("float sin(float in)", asFUNCTION(sinCallback), asCALL_CDECL);

私の sin コールバック関数 (オーバーロードされていることを気にせずに sin 関数を呼び出すためのもの) は次のようになります。

float sinCallback(float in) {
    return sin(in);
}

スクリプトをコンパイルするたびに、具体的には次のようなエラーが発生します。

ERROR: System function (1:17) : Expected ')' or ','
ERROR:  (0:0) : Failed in call to function 'RegisterGlobalFunction' with 'float sin(float in)' (Code: -10)

ドキュメントとヘッダー ファイルを確認すると、このエラー コードは無効な構文に関連しています。ただし、関数宣言の構文は確実に有効である必要があります。誰にもアイデアはありますか?

4

1 に答える 1

1

問題は、関数を登録している署名だと思います: float sin(float in)
「in」はC++関数のパラメーターの名前であると想定していますが、AngelScriptには参照用の //in指定子outinoutつまりfloat sin(float &in).

これはバグであるか、これらのキーワードを関数のパラメーター名として使用できないことが文書化されている可能性があります。

シグネチャ内のパラメータの名前を変更するだけ (コールバック関数で変更する必要はありません) (例: float sin(float f))、または完全に削除する場合 (float sin(float)シグネチャではまったく必要ないため)、関数は正常に登録されます。

于 2014-02-05T02:38:48.550 に答える