5

Unity3D 用の fmod プラグインを使用しています。DLL/dylib を動的にロードできるため、Windows および OSX へのコンパイルは問題ありません。問題は、iOS 用にコンパイルするときに発生します。私が使う

[DllImport("__Internal")]

iOS には静的にリンクされたライブラリが必要なためです。コンパイルすると、

SystemException: Duplicate native method found : FMOD_System_CreateSound. Please check your source carefully.

私はシンボルを複製しないと確信しています。これは、Unity 自体が FMOD をインポートしていて、2 つが衝突している可能性があることが原因ではないかと思います.しかし、これが事実である場合、FMOD_System_CreateSound が最初に引っかかることに驚いています。これを回避する方法はありますか?どうも!

いつものように、追加の詳細を提供させていただきます。

エラーの原因となるサンプル プロジェクトを次に示します。FMod を使用したサンプル Unity プロジェクト

編集: 競合は、iOS が同じ署名を持っていなくても関数に同じ名前を付けることを許可していないために発生しました。同じ名前の関数を削除した後 (つまり、不要な FMOD 機能をいくつか削除した後)、iOS にコンパイルできますが、FMOD は Unity によって既に初期化されているため、予想どおり、初期化時にエラーが発生します。

4

2 に答える 2

1

あなたの編集を参照してサンプルを見た後、コンパイラがどちらにリンクするかを認識しないため、同じ名前の2つのメソッドを持つことはできません。

簡単な修正は、明らかにそれらに異なる名前を付けることです。

初期化に関しては、Unity 3D が既に作成した FMOD にアクセスできる場合は、再初期化する必要はありません。

重複した初期化を削除するには、そのオブジェクトへのポインタで十分だと思います。これが明確であることを願っています。

于 2013-04-03T21:28:11.897 に答える