在android应用程序中使用dll文件

Hos*_*nia 8 dll android

我可以在Android应用程序中使用dll文件(在Windows应用程序中常用)吗?

小智 8

Android在Linux系统上运行 - DLL文件通常是为Windows编译的字节码.


Lio*_*ior 5

DLL代表“动态链接库”,是Windows的概念。在Linux中,等效项是SO(共享对象)。

您可以在CodeProject中参考本文,以了解两者之间的相似之处和不同之处。

这个Stackoverflow问题非常相似。


小智 5

如果您拥有DLL的src文件,请尝试重新编译为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
Run Code Online (Sandbox Code Playgroud)

您现在应该可以在Android项目中使用生成的.so文件。