我有一个来自 Windows 应用程序的 C lib 和 dll 文件。我没有源代码。是否可以在 IOS 应用程序中使用它。
我看到了不同的反应,很困惑。如果我们有源代码,我认为我们需要创建 dylib,然后我们可以在包含相关头文件后使用相同的源代码。
请分享任何专家的想法,以指导我正确的方向。感谢你的帮助 。
- 米娅
iOS 上不允许动态库,但除此之外,Darwin 或底层 XNU 内核根本无法识别 DLL 文件格式,因为二进制格式不同。
Windows API 也不能在 Darwin OS 上使用(Mac OS X 和 iOS 都是基本 Darwin OS 的包装器)。您需要重写 DLL 中的代码以使用 POSIX 和/或 Objective-C API,并将其编译为静态库以使用它。
您需要获得与 iOS 兼容的库,别无他法。有几个原因:
您将不得不将其重新编译为静态库(.a 文件)。Apple 不允许动态库,除了他们自己的框架(所以你不能将它编译为 dylib)。
不,如果你只有一个编译好的二进制 DLL,那么你就无法在 iOS 上使用它。除非你碰巧有一个用于即将推出的 Windows 8 的 ARM DLL,否则你的 DLL 包含 x86 或 x86-64 机器代码(或者如果你有很多钱,可能是 IA64),它们绝对不会在 iOS 设备上运行,这些都是ARM 架构。加上更多的原因。
如果你有源代码,你可以为 iOS 重新编译它,或者直接到你的应用程序中,作为一个可以与你的应用程序链接的静态库,或者作为一个框架的一部分的动态库。但在所有情况下,您都需要使用 iOS 编译器从源代码重新编译它。