繁体   English   中英

Android NDK可以在Android共享库中包含一个Windows dll吗?

[英]Can Android NDK include a windows dll to a an Android shared library?

甚至可以在ndk-build命令中链接/包含一个dll文件,并生成一个可以从android java代码访问dll函数的共享库。

我一直在尝试这样做,我尝试使用SWIG创建一个java包装器代码到dll而我没有成功,然后我开始认为它甚至可能!

谢谢。

不。不是没有构建整个Windows兼容性层。 Android与开箱即用的Windows不兼容。

此外,Windows DLL往往是针对Intel x86 CPU编译的,而大多数Android设备都有ARM CPU。 虽然存在Windows for ARM(Windows Phone,Windows RT等),但Android上不存在DLL应该存在的环境。

不可以.Windows DLL的格式与Android和Linux不同。

Windows使用称为PE COFF的格式:“可移植可执行文件,通用对象文件格式”。 虽然COFF本身来自UNIX,但微软有自己的版本。 存在进一步的不兼容性以支持.Net对象。 大多数UNIX和Linux使用ELF - 执行和链接格式。

即使它们是奇迹般地使用相同的格式,它仍然可能无法工作,因为机器架构必须是相同的,例如ARM(以及ARM的几种配置)或Intel x86。

而且还有更多。 即使你设法让DLL运行,它还有什么用? DLL通常具有其他外部依赖项,例如C运行时库,MSVCRT或kernel.dll

那么,获取源代码并原生重新编译它? 这可能DLLMain() ,但Windows DLL有时会有一个可选的DLLMain()入口点,Linux .so文件没有直接的等价物。 那剩下的代码怎么样? 它是以便携方式编写的吗? 它是否始终坚持使用ISO语言标准? 要真正可移植,必须以这种方式设计和编写代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM