AngelSciptに関数を登録するときに、呼び出しの種類が選べます。
それは、汎用か?ネイティブか?というものです。
具体的には登録するときにasCALL_GENERIC,asCALL_CDECL,asCALL_STDCALLを指定します。
どうやら、MacではasCALL_GENERICを指定する必要があるようです。
この指定方法によって関数の書き方がかわります。
tutorial/main.cppから抜粋します。
// Function implementation with native calling convention
void PrintString(string &str)
{
cout << str;
}
PrintStringはネイティブなので、C++関数そのままです。
// Function implementation with generic script interface
void PrintString_Generic(asIScriptGeneric *gen)
{
string *str = (string*)gen->GetArgAddress(0);
cout << *str;
}
PrintString_Genericは引数を取り出すコードが追加してあります。
C++の関数をそのまま登録できるのがAngelScriptの大きな利点です。
そのLuaに勝っている点の一つが台無しでした。
しょうがないので、Macでの検証はここまでにします。