Использование dll-файлов в приложении android

могу ли я использовать dll-файлы (обычно используемые в приложении windows) в приложении android?

4 ответов


Android работает на системе Linux-DLL файлы, как правило, байт-код компилируется для Windows.


DLL означает "динамическая библиотека ссылок" и является концепцией Windows. Эквивалентом в linux является SO (Shared Object).

вы можете обратиться к в этой статье в CodeProject для сходства и различия между ними.

этой Stackoverflow вопрос очень похож.


Если у вас есть файлы src для DLL, попробуйте перекомпилировать как общий объект ELF32, а затем связать это вместо вашего кода Android (- ниже приведено решение Windows):


set NDK_HOME=C:\Android\android-ndk-r9c   // customize this var for your own location   
set LD_LIBRARY_PATH=%NDK_HOME%\platforms\android-18\arch-arm\usr\lib
cd <C_SOURCE_DIRECTORY>

REM -- TEMPORARILY COPY SOME LIBS COMPILER MAY NEED  
copy %NDK_HOME%\platforms\android-18\arch-arm\usr\lib\crtbegin*.o .   
copy %NDK_HOME%\platforms\android-18\arch-arm\usr\lib\crtend*.o .

REM -- GENERATE YOUR OBJ FILE  
%NDK_HOME%\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gcc.exe -g -I%NDK_HOME%\platforms\android-18\arch-arm\usr\include -c -fPIC YourLib.c -o YourLib.o

REM -- GENERATE SHARED OBJ FROM OBJ FILE  
%NDK_HOME%\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gcc.exe -g -L%NDK_HOME%\platforms\android-18\arch-arm\usr\lib -shared -o YourLib_so.so YourLib_so.o

REM -- finally, remove the libraries previously copied to src directory

del .\crtbegin*.o     
del .\crtend*.o

теперь вы сможете использовать полученный результат .Итак, файл в вашем проекте Android.


вы можете использовать Wine в Linux для запуска программ с dll-s. И еще .файлы apk, которые у вас есть в Android (также версия Linux), могут иметь dll-S, Если у вас есть время выполнения внутри, которое может запускать эти dll-s.

Unity и Xamarin поддерживают библиотеки DLL.