在obj C语言 ios中使用C Dll和lib



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

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

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

  • 米娅

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

Windows API在Darwin

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

您需要获得与iOS兼容的库,没有其他方法可以解决它。有几个原因:

    iOS
  • 不支持DLL,因为它们是Windows格式,但此外,你不能在iOS上使用任何动态库,因为Apple限制了它。
  • DLL 通常用于英特尔 CPU,而 iOS 设备具有 ARM CPU。
  • 大多数 dll 都在调用 Windows API - 你确定这个不是吗?

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

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

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

最新更新