2

我有一个来自 Windows 应用程序的 C lib 和 dll 文件。我没有源代码。是否可以在 IOS 应用程序中使用它。

我看到了不同的反应,很困惑。如果我们有源代码,我认为我们需要创建 dylib,然后我们可以在包含相关头文件后使用相同的源代码。

请分享任何专家的想法,以指导我正确的方向。感谢你的帮助 。

  • 米娅
4

4 回答 4

5

iOS 上不允许动态库,但除此之外,Darwin 或底层 XNU 内核根本无法识别 DLL 文件格式,因为二进制格式不同。

Windows API 也不能在 Darwin OS 上使用(Mac OS X 和 iOS 都是基本 Darwin OS 的包装器)。您需要重写 DLL 中的代码以使用 POSIX 和/或 Objective-C API,并将其编译为静态库以使用它。

于 2012-05-10T04:30:56.237 回答
3

您需要获得与 iOS 兼容的库,别无他法。有几个原因:

  • iOS 不支持 DLL,因为它们是 windows 格式,但此外,您不能在 iOS 上使用任何动态库,因为 Apple 对其进行了限制。
  • DLL 通常用于英特尔 CPU,而 iOS 设备具有 ARM CPU。
  • 大多数 dll 都在调用 Windows API - 你确定这个不是吗?
于 2012-05-10T04:23:38.237 回答
1

您将不得不将其重新编译为静态库(.a 文件)。Apple 不允许动态库,除了他们自己的框架(所以你不能将它编译为 dylib)。

于 2012-05-10T04:23:42.197 回答
1

不,如果你只有一个编译好的二进制 DLL,那么你就无法在 iOS 上使用它。除非你碰巧有一个用于即将推出的 Windows 8 的 ARM DLL,否则你的 DLL 包含 x86 或 x86-64 机器代码(或者如果你有很多钱,可能是 IA64),它们绝对不会在 iOS 设备上运行,这些都是ARM 架构。加上更多的原因。

如果你有源代码,你可以为 iOS 重新编译它,或者直接到你的应用程序中,作为一个可以与你的应用程序链接的静态库,或者作为一个框架的一部分的动态库。但在所有情况下,您都需要使用 iOS 编译器从源代码重新编译它。

于 2012-05-10T04:24:42.683 回答