我目前正在创建一个使用 OpenCV 的 iOS Swift 框架。为了良好的实践,我们不想将 OpenCV 编译到我们的最终框架中,因为这可能会导致框架用户发生冲突和问题。
我们发现我们正在下载/使用的 opencv2.framework 是一个静态库,因此我们研究了如何从源代码创建 OpenCV 框架的动态版本(https://github.com/opencv/opencv/tree/3.4 )
我们用来将 OpenCV 构建为动态框架的源代码。
https://docs.opencv.org/3.4.3/d5/da3/tutorial_ios_install.html https://github.com/opencv/opencv/pull/8009
简而言之,我们运行以下 python 脚本来构建动态框架
python platforms/ios/build_framework.py ios --dynamic
我们成功地将 OpenCV 构建为动态框架,我们从 opencv/iOS/opencv2.framework 中获取了 opencv2.framework,因为这是模拟器和设备的通用框架。然后将其添加到我们的框架中。然后我们构建了我们的框架,它再次成功构建。
然后我们将我们的框架添加到嵌入式测试应用程序中,然后按下运行,我们得到以下错误:
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 添加/嵌入到应用程序中?