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