我可以在Android应用程序中使用dll文件(在Windows应用程序中常用)吗?
答案 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。