0

我正在尝试使用 NDK 制作一个使用 FMOD for Android 的 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”

我将 fmodex.so 和 fmodexL.so 库都包含在我的 plugins/android 目录和项目的根目录中,并且我检查了它们是否存在于生成的 APK 的 lib/armeabi 文件夹中。

如果有人感兴趣,我还可以发布我用来生成共享库的 Android 生成文件。

4

1 回答 1

0

.so 库必须包含在项目的根目录中才能找到它们。

于 2013-11-29T15:52:25.420 回答