带有OpenCV动态框架的Swift框架,未加载库

带有OpenCV动态框架的Swift框架,未加载库,swift,xcode,opencv,swift-framework,Swift,Xcode,Opencv,Swift Framework,我目前正在创建一个使用OpenCV的iOS Swift框架。对于良好的实践,我们不希望将OpenCV编译到我们的最终框架中,因为这可能会导致框架用户发生冲突和问题 我们发现我们正在下载/使用的opencv2.framework是一个静态库,因此我们研究了如何从源代码()创建OpenCV框架的动态版本 我们用于将OpenCV构建为动态框架的源代码 简而言之,我们运行以下python脚本来构建动态框架 python platforms/ios/build_framework.py ios --d

我目前正在创建一个使用OpenCV的iOS Swift框架。对于良好的实践,我们不希望将OpenCV编译到我们的最终框架中,因为这可能会导致框架用户发生冲突和问题

我们发现我们正在下载/使用的opencv2.framework是一个静态库,因此我们研究了如何从源代码()创建OpenCV框架的动态版本

我们用于将OpenCV构建为动态框架的源代码

简而言之,我们运行以下python脚本来构建动态框架

python platforms/ios/build_framework.py ios --dynamic
我们成功地将OpenCV构建为一个动态框架,我们采用了OpenCV/iOS/opencv2.framework中的opencv2.framework,因为这是模拟器和设备的通用框架。然后将其添加到我们的框架中。然后我们构建了我们的框架,该框架再次成功构建

然后,我们将我们的框架添加到嵌入式测试应用程序中,并按下run,我们得到以下错误:

dyld: Library not loaded: 
/Desktop/Workspace/OpenCV/ios/build/build-iphoneos/lib/Release/opencv2.framework/opencv2
  Referenced from:     
/private/var/containers/Bundle/Application/UUID/Test.app/Frameworks/SomeFramework.framework/SomeFramework
  Reason: image not found
如果我们还将opencv2.framework添加到应用程序中,则会出现以下错误,这与上面的错误类似,只是参考不同:

dyld: Library not loaded:     
/Desktop/Workspace/OpenCV/ios/build/build-iphoneos/lib/Debug/opencv2.framework/opencv2
  Referenced from: 
/var/containers/Bundle/Application/UUID/TestApp.app/TestApp
  Reason: image not found

这就是我的错误所在,为什么构建过程试图在OpenCV构建目录中找到一个框架?当opencv2.framework被添加/嵌入到应用程序中时?

您可能只需要将这些框架添加到应用程序的嵌入式二进制文件中

旁注:您确定您创建OpenCV动态框架的解决方案会适合您的最终用户吗?您正在强制您的最终用户将OpenCV依赖项添加到他们的应用程序中——他们必须这样做才能使您的框架正常运行


但是,如果OpenCV只是作为静态库正式发布,这意味着您的客户将把它作为静态库添加到他们的项目中。我不确定您正在寻找动态链接的OpenCV的框架是否能够使用静态链接的OpenCV库。很高兴被证明是错误的。

您可能只需要将框架添加到应用程序的嵌入式二进制文件中

旁注:您确定您创建OpenCV动态框架的解决方案会适合您的最终用户吗?您正在强制您的最终用户将OpenCV依赖项添加到他们的应用程序中——他们必须这样做才能使您的框架正常运行


但是,如果OpenCV只是作为静态库正式发布,这意味着您的客户将把它作为静态库添加到他们的项目中。我不确定您正在寻找动态链接的OpenCV的框架是否能够使用静态链接的OpenCV库。很高兴被证明是错误的。

检查框架中的
框架搜索路径
设置检查框架中的
框架搜索路径
设置