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

发布于 2024-10-14 00:30:53 字数 48 浏览 1 评论 0原文

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

Can I use dll files (commonly used in windows Application) in Android application?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

万水千山粽是情ミ 2024-10-21 00:30:53

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

Android runs on a Linux system - DLL files are usually bytecode compiled for Windows.

ゃ懵逼小萝莉 2024-10-21 00:30:53

如果您有 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 文件项目。

If you have the src files for the DLL, try recompiling as an ELF32 shared object, then link that instead into your Android code (- below is a Windows solution):


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

You should now be able to use the resulting .so file in your Android project.

指尖上得阳光 2024-10-21 00:30:53

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

Unity 和 Xamarin 都支持 dll。

You can use Wine on Linux to run programs that have dll-s. Also .apk files that you have in Android (also a version of Linux) may have dll-s if you have a run-time inside that can run those dll-s.

Unity and Xamarin both support dlls.

北方的巷 2024-10-21 00:30:53

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

您可以参考CodeProject中的这篇文章了解两者的异同。

这个 Stackoverflow 问题非常相似。

DLL stands for "Dynamic Link Library" and is a Windows concept. The equivalent in linux is SO (Shared Object).

You can refer to this article in CodeProject for similarities and differences between the two.

This Stackoverflow question is pretty similar.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文