我在MacOSX上做了一个使用CEF概念的小证明。我采用了Chromium Embedded Framework.framework并通过运行:
更改了它的rpathinstall_name_tool -id "@rpath/Chromium Embedded Framework.framework/Chromium Embedded Framework" Chromium\ Embedded\ Framework.framework/Chromium\ Embedded\ Framework
然后编译并运行这样的程序:
$ ./cefobjchelper.app/Contents/MacOS/cefobjchelper
dyld: Library not loaded: @executable_path/Chromium Embedded Framework
Referenced from: /Users/pupeno/Library/Developer/Xcode/DerivedData/cefobjc-bxtruyemnyagwwgdejtzuxngovsr/Build/Products/Debug/./cefobjchelper.app/Contents/MacOS/cefobjchelper
Reason: image not found
Trace/BPT trap: 5
据我所知,@ executable_path / Chromium Embedded Framework并不存在,但为什么在我更正CEF中的路径时,它甚至会查找它?
为了确保我检查了包中包含的CEF是否有正确的路径,它确实:
$ otool -D cefobjchelper.app/Contents/Frameworks/Chromium\ Embedded\ Framework.framework/Chromium\ Embedded\ Framework
cefobjchelper.app/Contents/Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework:
@rpath/Chromium Embedded Framework.framework/Chromium Embedded Framework
我在这里缺少什么?
答案 0 :(得分:2)
原因是在我的主目录上的其他地方有一个额外的框架路径来自之前的实验和库的另一个副本,并且从链接库列表中删除该库并没有删除路径,所以从新位置重新添加它,从旧位置拾取它,用于链接但不嵌入。