0

NDK を使用して、Android 用の FMOD を使用する Android プラグインを作成しようとしています (正常に動作する FMOD と対話する必要があるサードパーティのオープンソース C++ ライブラリも使用しているため、これをネイティブにする必要があります)。NDK OK ですべてをコンパイルできますが、Unity プロジェクトを作成すると、FMOD 共有ライブラリを使用している場合、常に DLLNotFoundException が発生します。私が作成した共有ライブラリは、FMOD 呼び出しを含めなくても正常に動作することに注意してください。そのため、Unity プレーヤーが FMOD 共有ライブラリを見つけられないことは確実です。

これは私のプラグインコードです:

extern "C" {
#endif

    static int mycount = 0;
    int FooTest(){

        unsigned int version;
        FMOD::System* system_;

        //Init
        FMOD_RESULT result = FMOD::System_Create(&system_);
        if (result != FMOD_OK) return -1;

        result = system_->getVersion(&version);
        if (result != FMOD_OK) return -1;

        if (version < FMOD_VERSION)
        {
            //printf("Error!  You are using an old version of FMOD %08x.  This program requires %08x\n", version, FMOD_VERSION);
            return -1;
        }
        result = system_->init(32, FMOD_INIT_NORMAL, 0);
        if (result != FMOD_OK) return -1;

        return mycount++;
    }


#ifdef __cplusplus
}
#endif

すべての FMOD をコメントアウトすると、返されたカウントが増加し、画面に表示されます。FMOD 呼び出しでビルドするたびに、「DLLNotFoundException:FooTest」が発生します。

plugins/android ディレクトリとプロジェクトのルートの両方に fmodex.so および fmodexL.so ライブラリを含め、生成された APK の lib/armeabi フォルダーに存在することを確認しました。

興味のある方は、共有ライブラリの生成に使用する Android メイクファイルを投稿することもできます。

4

1 に答える 1