Macos OS dlopen can';找不到框架-找不到图像
我正在尝试将Google Breakpad(一些外部框架)支持添加到我的应用程序中。我已经完成了所有必需的步骤,但当我尝试使用dlopen加载我的应用程序时,出现以下错误:Macos OS dlopen can';找不到框架-找不到图像,macos,dlopen,google-breakpad,Macos,Dlopen,Google Breakpad,我正在尝试将Google Breakpad(一些外部框架)支持添加到我的应用程序中。我已经完成了所有必需的步骤,但当我尝试使用dlopen加载我的应用程序时,出现以下错误: (char *) error = 0x0000000100200175 "dlopen(/Users/user/MyApp.app/Contents/MacOS/MyApp, 1): Library not loaded: @executable_path/../Frameworks/Breakpad.framework/
(char *) error = 0x0000000100200175 "dlopen(/Users/user/MyApp.app/Contents/MacOS/MyApp, 1):
Library not loaded: @executable_path/../Frameworks/Breakpad.framework/Versions/A/Breakpad\n
Referenced from: /Users/user/MyApp.app/Contents/MacOS/MyApp\n
Reason: image not found"
我检查了,并且Breakpad文件确实存在于相对路径(MyApp文件)中
这里是MyApp文件上的otool-L(注意@executable\u路径):
有人有线索吗?遵循以下步骤,它可能会起作用:
希望它能正常工作。事实证明,在使用动态库和为OS X 10.6编译时,这是一个问题。 动态加载后,@executable_路径不会更新,因此加载的二进制文件正在查找其相对于加载二进制文件的依赖关系 我最终重新编译了我的框架Breakpad,并使用@loader\u path而不是@executable\u path,现在一切正常 更多信息请点击此处:
您是如何构建MyApp并包含框架的?为什么以及如何使用dlopen?我包括了框架。它被添加到Frameworks文件夹和将其复制到Frameworks的copyfiles阶段。另外,我可以在/Contents/Frameworks/Breakpad.framework中找到它。我正在使用dlopen,因为我的应用程序有一个加载它的包装器。我已经说过,我添加了一个复制文件阶段来复制框架。
Users-Mac:MacOS user$ otool -L MyApp
MyApp:
/usr/lib/libcurl.4.dylib (compatibility version 6.0.0, current version 6.1.0)
/usr/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
/usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
/usr/lib/libsqlite3.dylib (compatibility version 9.0.0, current version 9.6.0)
/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (compatibility version 1.0.0, current version 4.0.0)
/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit (compatibility version 1.0.0, current version 1.0.0)
@executable_path/../Frameworks/Breakpad.framework/Versions/A/Breakpad (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 152.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 15.0.0)
/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreAudioKit.framework/Versions/A/CoreAudioKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI (compatibility version 1.0.0, current version 49.0.0)
/System/Library/Frameworks/DiscRecording.framework/Versions/A/DiscRecording (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore (compatibility version 1.2.0, current version 1.6.3)
/System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 533.21.1)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.43.0)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1038.36.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 38.0.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 44.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 751.62.0)