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

时间:2011-01-25 12:33:27

标签: android dll

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

4 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:5)

DLL代表“动态链接库”,是Windows概念。 linux中的等价物是SO(共享对象)。

您可以参考CodeProject中的this article,了解两者之间的相似点和不同点。

Stackoverflow question非常相似。

答案 2 :(得分: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

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

答案 3 :(得分:1)

您可以在Linux上使用Wine来运行具有dll-s的程序。你在Android(也是Linux的一个版本)中的.apk文件可能有dll-s,如果你有一个运行时可以运行那些dll-s。

Unity和Xamarin都支持dll。