我可以在iphone应用程序中使用动态库(共享对象)吗?

我可以在iphone应用程序中使用动态库(共享对象)吗?,iphone,ios,Iphone,Ios,众所周知,静态库可以在Iphone应用程序中很好地工作,并且你的应用程序可以很容易地通过IOS应用商店的批准 不幸的是,我现在使用的两个静态库都有一些C函数和变量 所以我将它们编译成*.dylib(动态库),并将它们复制到XCode中的“Bundle Resources”中 dylib_handle = dlopen(dylib_path_in_resource_bundle, RTLD_LAZY); func = dlsym(dylib_handle, "func"); // invoke

众所周知,静态库可以在Iphone应用程序中很好地工作,并且你的应用程序可以很容易地通过IOS应用商店的批准

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

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

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

// invoke func();
这在模拟器和Ipad(当然是不同的动态库)中运行良好

我注意到有人说Iphone应用程序不支持任何第三方动态库,我的应用程序将被拒绝。(见此处)

但我仔细阅读了“应用商店审查指南”,我发现没有任何项目符合我的问题

我现在糊涂了

iphone应用程序支持动态库吗?IOS应用商店允许这样做吗


谁能给我一个正式的答复。

正如贝尔纳多·拉莫斯(Bernardo Ramos)在评论中所说:“自从iOS8以来,我们可以使用动态库”

应用商店不允许使用动态库。运行时不能加载任何代码。答案是将它们转换为静态库,并将它们编译到应用程序中

从iphoneostecoverview:

如果要将框架或动态库中的代码集成到应用程序中,则在构建项目时应将该代码静态链接到应用程序的可执行文件中

将“应该”改为“必须”


参见SO答案:

否,不允许使用动态库


但是您可以创建静态库,甚至是“静态框架”(也就是说,与经典框架一样,一个扩展名为“.framework”的文件夹,其中包含标题、资源文件(如果有的话)和库本身,但库必须是静态库).

C函数和变量与现在不能将其用作静态库有什么关系?此答案的可能重复项仅适用于较旧的iOS版本。由于iOS8,我们可以使用动态库