Я пытаюсь создать Android-модуль, который использует FMOD для Android, используя NDK (мне нужно, чтобы это было родным, потому что я также использую сторонний open-source C++ библиотека, которая должна взаимодействовать с FMOD, что прекрасно работает). Я могу скомпилировать все с помощью NDK OK, но когда я создаю проект Unity, я всегда получаю исключение DLLNotFoundException, если я использую общую библиотеку FMOD. Обратите внимание, что библиотека, которую я создал, отлично работает, если я не включаю вызовы FMOD, поэтому я уверен, что проигрыватель Unity не может найти общие папки FMOD.Использование сторонней общей библиотеки на Android с NDK с Untiy3D
Это мой плагин код:
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, так и в корень моего проекта, и я проверил что они присутствуют в папке lib/armeabi сгенерированного APK.
Если кто-либо заинтересован, я могу также опубликовать файлы Android, которые я использую для создания моей общей библиотеки.