【问题标题】:Copied Cocoa Framework searches /Library/Frameworks/... only. How can I make it search binary within itself?复制的 Cocoa Framework 仅搜索 /Library/Frameworks/...。我怎样才能让它在自身内部搜索二进制文件?
【发布时间】:2011-08-20 15:30:24
【问题描述】:

我用动态库制作了一个 Cocoa 框架。该库包含 C 函数。我将框架复制到其他项目中,编译良好,但运行时崩溃并显示这样的消息。

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) 

二进制文件位于复制的框架目录中。为什么会发生这种情况,我该如何避免这种情况?

【问题讨论】:

    标签: cocoa macos mac-frameworks


    【解决方案1】:

    这比我想象的要复杂。

    问题是在框架中定位二进制文​​件。仅使用$(EXECUTABLE_PATH) 就足够了。但真正的问题是它应该是绝对路径。

    所以基本解决方案是@executable_path/../Frameworks/$(EXECUTABLE_PATH)。因为这是嵌入式私有框架,而运行应用程序二进制文件的路径就是这样。

    INSTALL_PATH = @executable_path/../Frameworks
    LD_DYLIB_INSTALL_NAME = @executable_path/../Frameworks/$(EXECUTABLE_PATH)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-23
      • 2022-01-11
      • 2023-01-25
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2021-05-29
      • 2016-02-28
      相关资源
      最近更新 更多