iOS Framework:找不到图片 [英] iOS Framework: image not found

查看:99
本文介绍了iOS Framework:找不到图片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当尝试嵌入共享框架时从CMake生成进入Xcode iOS应用程序,我遇到以下问题:

When trying to embed a shared Framework generated from CMake into an Xcode iOS app, I encounter the following issue:

模型:未加载库:/Users/jones/Documents/project/build/ios/foo.framework/foo

dyld: Library not loaded: /Users/jones/Documents/project/build/ios/foo.framework/foo

引用自:/var/Containers/Bundle/Application//myapp.app/myapp

Referenced from: /var/Containers/Bundle/Application//myapp.app/myapp

原因:找不到图片

似乎它具有不正确的"dylib id",但是我不确定这到底意味着什么.注意,我的框架出现在框架"中.应用程序的文件夹(安装在手机上的内置产品").

It seems like it has an incorrect "dylib id", but I am not sure what that means exactly. Note that my framework appears in the "Frameworks" folder of the app (the built "Product" that is installed on the phone).

使用 otool -L 检查我的应用程序,我看到:

Checking my app with otool -L, I see:

myapp:
    /Users/name/Documents/project/build/ios/foo.framework/foo
    /System/Library/Frameworks/Foundation.framework/Foundation
    /usr/lib/libobjc.A.dylib
    ...

这似乎表明我的框架的路径在应用程序中是错误的.但是我似乎无法从Xcode更改它.

Which seems to show that the path to my framework is wrong in the app. But I can't seem to change it from Xcode.

Apple开发者论坛上,有人提到将DYLIB_INSTALL_NAME_BASE更改为 @来自 Build Settings->的rpath 动态库安装名称库,但不能解决我的问题.

On the Apple dev forum, somebody mentions changing DYLIB_INSTALL_NAME_BASE to @rpath from Build Settings -> Dynamic Library Install Name Base, but it doesn't solve my problem.

来自Xcode的链接器日志如下所示(可能更容易阅读此处:

The linker log coming from Xcode looks like so (maybe easier to read here:

Ld /Users/jones/Library/Developer/Xcode/DerivedData/myapp-gngqigiisiapqjflqkjjadvdbneu/Build/Products/Debug-iphoneos/myapp.app/myapp normal arm64
cd /Users/jones/Documents/project/ios-playground/myapp
export IPHONEOS_DEPLOYMENT_TARGET=11.2
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.2.sdk -L/Users/jones/Library/Developer/Xcode/DerivedData/myapp-gngqigiisiapqjflqkjjadvdbneu/Build/Products/Debug-iphoneos -F/Users/jones/Library/Developer/Xcode/DerivedData/myapp-gngqigiisiapqjflqkjjadvdbneu/Build/Products/Debug-iphoneos -F/Users/jones/Documents/project/ios-playground/myapp -F/Users/jones/Documents/project/ios-playground/myapp/Frameworks -filelist /Users/jones/Library/Developer/Xcode/DerivedData/myapp-gngqigiisiapqjflqkjjadvdbneu/Build/Intermediates.noindex/myapp.build/Debug-iphoneos/myapp.build/Objects-normal/arm64/myapp.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -miphoneos-version-min=11.2 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/jones/Library/Developer/Xcode/DerivedData/myapp-gngqigiisiapqjflqkjjadvdbneu/Build/Intermediates.noindex/myapp.build/Debug-iphoneos/myapp.build/Objects-normal/arm64/myapp_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -fembed-bitcode-marker -stdlib=libc++ -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -Xlinker -add_ast_path -Xlinker /Users/jones/Library/Developer/Xcode/DerivedData/myapp-gngqigiisiapqjflqkjjadvdbneu/Build/Intermediates.noindex/myapp.build/Debug-iphoneos/myapp.build/Objects-normal/arm64/myapp.swiftmodule -framework foo -Xlinker -dependency_info -Xlinker /Users/jones/Library/Developer/Xcode/DerivedData/myapp-gngqigiisiapqjflqkjjadvdbneu/Build/Intermediates.noindex/myapp.build/Debug-iphoneos/myapp.build/Objects-normal/arm64/myapp_dependency_info.dat -o /Users/jones/Library/Developer/Xcode/DerivedData/myapp-gngqigiisiapqjflqkjjadvdbneu/Build/Products/Debug-iphoneos/myapp.app/myapp

我该如何解决?

推荐答案

实际上有一种方法可以在CMake中设置"install_name_dir":

There is actually a way to set the "install_name_dir" in CMake:

set_target_properties(dynamicFramework PROPERTIES
    ...
    BUILD_WITH_INSTALL_RPATH TRUE
    INSTALL_NAME_DIR @rpath
)

这篇关于iOS Framework:找不到图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆