我可以在我的iPhone应用程序中使用dynamic库(共享对象)?

正如众所周知,静态库可以在iPhone应用程序中运行良好,您的应用程序可以很容易地通过iOS应用程序商店

不幸的是,我现在使用的两个静态库有一些C函数和variables。

所以我将它们编译成* .dylib(dynamic库),并将它们复制到XCode中的“Bundle Resources”中。

dylib_handle = dlopen(dylib_path_in_resource_bundle, RTLD_LAZY); func = dlsym(dylib_handle, "func"); // invoke func(); 

这在模拟器和Ipad(当然,不同的dynamic库)中工作得很好。

我注意到有人说iPhone应用程序不支持任何第三方dynamic库,我的应用程序将被拒绝。 (看这里)

但我仔细阅读了“App Store评论指南”,发现没有任何项目符合我的问题。

我现在很困惑!

iPhone应用程序是否支持dynamic库? IOS AppStore是否允许这样做?

谁可以给我一个正式的答复。

dynamic库不被App Store所允许。 没有代码可以在运行时加载。 答案是将它们转换为静态库并将其编译到应用程序中。

从iPhoneOSTechOverview:

“如果您想将框架或dynamic库中的代码集成到应用程序中,那么在构build项目时,应该将这些代码静态地链接到应用程序的可执行文件中。

阅读“应该”为“必须”

请参阅答案: 可以为iOS创builddynamic库吗?

不,dynamic库是不允许的。

但是你可以创build静态库,甚至是“静态框架”(就是说,就像一个经典的框架是一个带有“.framework”扩展名的文件夹,包含你的头文件,资源文件和lib本身, lib必须是一个静态库)。