c++ - liboauth 没有被正确链接

标签 c++ xcode linker linker-errors

我正在尝试将 liboauth.dylib 添加到我的 xcode 项目 (c++)。我已经配置并制作了库,它现在位于我的 /usr/local/lib 中,现在有:

 liboauth.0.dylib
 liboauth.dylib <- a link to liboauth.0.dylib
 liboauth.li
 liboauth.a

usr/local/include 中有 header 。看起来不错。

我通过将路径 /usr/local/lib/liboauth.dylib 添加到 Other Linker Flags 部分和 usr 将其包含在我的 xcode 中/local/include/Header Search Paths

我还在 Library Search Paths 中包含了相同的内容。

这在我的系统上构建良好。但是,如果我将生成的 .app 带到另一台 (osx) 计算机,它会给出错误 /usr/local/liboauth.0.dylib (我通过打开 .app 并运行 unix 可执行文件来得到这个).

链接器在构建时不应该包含 liboauth dylib 吗?然后转到另一台计算机时应该不会有问题吗?

如果答案是否定的,那么我将如何将 liboauth.dylib 包含到 .app 中,以便它可以在任何计算机(运行 osx)上运行?

具体错误如下:

Library not loaded: /usr/local/lib/liboauth.0.dylib
Referenced from: /Users/scratch/gameTest.app/Contents/MacOS/gameTest
Reason: image not found

编辑: 我找到问题了!在 liboauth.0.dylib 上使用 otool -l 命令我发现了这个:

Load command 3
          cmd LC_ID_DYLIB
      cmdsize 56
         name /usr/local/lib/liboauth.0.dylib (offset 24)
   time stamp 1 Thu Jan  1 12:00:01 1970
      current version 9.1.0
compatibility version 9.0.0

有人可以帮我弄清楚如何改变这个吗?我认为它与 install_name_tool 有关,但我不知道如何正确处理它。

最佳答案

两个系统一样吗? 32 位/64 位,Snow Leopard 与 Leopard。

我可以看到库会有何不同,如果是这种情况,可能会产生错误。

如果它们相同,则可能是您在项目设置中设置了链接器标志,并且它被您的目标设置覆盖了。

关于c++ - liboauth 没有被正确链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7857555/

相关文章:

C++ 字符串到字符串数组的分隔符

c++ - MSVC _Crt* 宏在 RAII 代码中使用不安全

c++ - 为什么这不会改变 .txt 文件?

iphone - 抛硬币平滑过渡

xcode - 快速调整每个 Storyboard问题的大小

c++ - 您将如何列出已编译库中包含的可用函数等?

c++ - "extern C"函数从 C++ 共享对象符号表中消失

c++ - 在给定时间内将频率从f1缓慢升高到f2的正弦波

ios - 在 xcode 上关闭应用内购买

android - Xamarin.Forms 获取 Mono.Linker.MarkException : Error processing method when compiling in release mode