我正在尝试使用 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 生成文件。