2013-03-28 1 views
5

Unity3Dにfmodプラグインを使用しています。私はDLL/dylibを動的にロードできるので、WindowsとOSXにコンパイルするのは問題ありません。 iOS用にコンパイルすると問題が発生します。私は使用するUnity3d - fmodで見つかった重複するメソッド

[DllImport("__Internal")] 

iOSは静的にリンクされたライブラリを必要とするためです。

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

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

いつものように、私は追加の詳細を提供しています! Sample Unity Project with FMod

EDIT: 競合が機能は、彼らが同じシグネチャを持っていないにもかかわらず、同じ名前を持つことができないのiOSによって引き起こされた。ここ

は、エラーが発生しますサンプルプロジェクトです。同じ名前の関数を削除して(私が必要としなかったいくつかのFMOD機能を削除した後)、私はiOSにコンパイルできますが、期待通りに、FMODがUnityによって既に初期化されているので、

+1

私は同じ問題を抱えていました.UnitのReachability Codeは実際にすでに実装されているためです。 Unity APIでFMODを使用しようとしましたか?またはあなたが必要とするFMODに欠けている機能がありますか?私は、統一感がFMODのいくつかの特徴を明らかにしたことを読んだ。 – JeanLuc

+1

これを試しましたか? http://www.squaretangle.com/FMODUnity.html – JeanLuc

+1

FMOD over Unity APIを使用すると、iOSサンドボックスの外部からデータをストリームできません。私は完全なFMOD APIが必要です。四角形のプラグインは問題を解決しません。 Windows APIの.csをUnityプロジェクトに含めるだけです。さらに、そのページであなたはiOSで動作しないことをリンクしました) –

答えて

1

サンプルを参照して、あなたが持つことはできませんコンパイラと同じ名前の2つのメソッドは、リンク先を認識しません。

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

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

私は、そのオブジェクトへのポインタが複製の初期化を削除するのに十分であると仮定します。これは明らかです。

+0

私は今日、このソリューションを探し始めました.C#の組み込み反映を使用してシステムオブジェクトへの参照を取得しようとしました。私は何もする前にmain.mmでFMODを初期化しようとしましたが、実際にはUnityはFMODが初期化されていて満足していません!私はこれを調べ続けます。私は、fmodのストリームとほぼ同じ方法でSoundClipを単一で作成できることも見ていますが、これは問題ありません –

2

Unity3dにはすでに制限付きバージョンのFMODがバンドルされています。このファイルにはが含まれており、表示されている競合が発生しています。残念ながら、この時点でを無効にすることはできないようですので、FMODのフルバージョンを使用することができます

+1

この人はUnityでFMODを無効にできました:http://forum.unity3d.com/threads/124373-Working-FMOD-plugin-for -iOS-who-is-interested –

+1

競合は、iOSが同じ署名を持たないにもかかわらず同じ名前を持つことを許可していないことが原因です。同じ名前の関数を削除して(私が必要としなかったいくつかのFMOD機能を削除した後)、私はiOSにコンパイルできますが、期待通りに、FMODがUnityによって既に初期化されているので、 –

関連する問題