复制了Cocoa框架搜索/库/框架/。。。只有如何让它在自身内部搜索二进制文件?
我用动态库制作了一个Cocoa框架。这个库包含C函数。我将该框架复制到另一个项目中,编译得很好,但在运行时,它会崩溃,并显示类似这样的消息复制了Cocoa框架搜索/库/框架/。。。只有如何让它在自身内部搜索二进制文件?,cocoa,macos,mac-frameworks,Cocoa,Macos,Mac Frameworks,我用动态库制作了一个Cocoa框架。这个库包含C函数。我将该框架复制到另一个项目中,编译得很好,但在运行时,它会崩溃,并显示类似这样的消息 warning: Unable to read symbols for /Library/Frameworks/NewtonGameDynamics.framework/Versions/A/NewtonGameDynamics (file not found). warning: Unable to read symbols from "NewtonGam
warning: Unable to read symbols for /Library/Frameworks/NewtonGameDynamics.framework/Versions/A/NewtonGameDynamics (file not found).
warning: Unable to read symbols from "NewtonGameDynamics" (not yet mapped into memory).
[Switching to process 48902 thread 0x0]
dyld: Library not loaded: /Library/Frameworks/NewtonGameDynamics.framework/Versions/A/NewtonGameDynamics
Referenced from: /Users/eonil/Library/Developer/Xcode/DerivedData/newton-integration-test-1-ddaxmlnzdnwstkfaiolnkygefbmp/Build/Products/Debug/newton-integration-test-1.app/Contents/MacOS/newton-integration-test-1
Reason: image not found
(gdb)
二进制文件位于复制的框架目录中。为什么会发生这种情况?我如何避免这种情况?这比我想象的要复杂一些 问题是在框架中定位二进制文件。仅使用
$(可执行路径)
就足够了。但真正的问题是它应该是绝对路径
所以基本的解决方案是@executable\u path/./Frameworks/$(executable\u path)
。因为这是嵌入式私有框架,运行应用程序二进制文件的路径就是这样
INSTALL_PATH = @executable_path/../Frameworks
LD_DYLIB_INSTALL_NAME = @executable_path/../Frameworks/$(EXECUTABLE_PATH)
这比我想象的要复杂一些 问题是在框架中定位二进制文件。仅使用
$(可执行路径)
就足够了。但真正的问题是它应该是绝对路径
所以基本的解决方案是@executable\u path/./Frameworks/$(executable\u path)
。因为这是嵌入式私有框架,运行应用程序二进制文件的路径就是这样
INSTALL_PATH = @executable_path/../Frameworks
LD_DYLIB_INSTALL_NAME = @executable_path/../Frameworks/$(EXECUTABLE_PATH)