Я пытаюсь заставить библиотеку Native C / C ++ работать с Monodroid в эмуляторе, используя DllImport.Я занимаюсь в основном Windows / Visual Studio 2010.
Я создал собственную библиотеку C / C ++ (ZeroMQ) с использованием инструментов Android NDK для платформ x86 и armeabi, используя виртуальную машину Ubuntu.Это правильно - x86 для эмулятора и armeabi для реального устройства?(Это, безусловно, относится к iPhone / MonoTouch - хотя в этом случае статически связанные файл libzmq.a и DllImport __Internal)
Я добавил версию libzmq.so для x86 в свой проект MonoDroid в структуре каталоговlib \ x86 \ libzmq.so
Когда я впервые попытался построить / развернуть на симуляторе, я получил ошибку «не могу определить тип abi», поэтому я добавил x86 в AndroidNativeLibrary Include = "lib \"x86 \ libzmq.so "> группа элементов проекта.Затем это развертывается.
У меня есть DllImport для вызова функции [DllImport ("libzmq"
Я пробовал libzmq.so, lib / x86 / libzmq, lib / x86 / libzmq.so и т. д., но затем я вызываю метод DllImported (запущенный в эмуляторе), я всегда получаю DllNotFoundException.
Может кто-нибудь дать мне какое-нибудь направление?
РЕДАКТИРОВАТЬ: после прочтения другого ответа поддержкив котором говорится, что эмулятор использует библиотеки armeabi .so, я удалил x86 / libzmq и добавил мою lib / armeabi / libzmq.so в качестве AndroidNativeLibrary. Я также удалил запись Abi файла проекта, и действительно, проект собран и развернут нормально.
Однако, я все еще получаю DllNotFoundException, когда я пытаюсь вызвать функцию DllImported. Любые идеи?
Большое спасибо