在对象中使用C Dll和lib - ios

时间:2012-05-10 04:18:26

标签: ios c dll

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

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

请分享任何专家意见,以指导我正确的方向。 感谢您的帮助。

  • mia

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

你需要获得一个iOS兼容的库,没有别的办法。有几个原因:

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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