代码之家  ›  专栏  ›  技术社区  ›  Mateusz

从Qt creator运行的应用程序使用的库与单独运行时不同

  •  0
  • Mateusz  · 技术社区  · 8 年前

    我必须使用sftp上传文件时,应用程序启动运行按钮从QT的创造者它的作品很好。

    CURLE\u不支持的\u协议

    使用检查osx上的卷曲 curl -V

    然而,QT creator在一些不同的上下文中运行应用程序,使用支持sftp的curl,因为它上传文件时不会出错。

    所以问题是,我如何使它如此独立,应用程序使用与从QT Creator运行时相同的dylib版本?

    1 回复  |  直到 8 年前
        1
  •  2
  •   NP Rooski Z    8 年前

    选项A)更改库路径

    RPATH

    应用程序使用错误路径的另一个原因可能是 在您的 动态库 . 你可以查一下 在动态库上使用 otool -l <full-path-of-your-app> . RPATH告诉您二进制文件将首先从中提取库的位置,如果在应用程序中设置了该位置,则可以取消设置 RPATH路径 由QT creator设置。

    检查 man page of dyld 了解如何

    RPATH路径 LC_RPATH 动态库部分中的字段)。

    $ otool -l /Applications/Xcode.app/Contents/MacOS/Xcode 
    Load command 22
              cmd LC_RPATH
          cmdsize 48
             path @executable_path/../Frameworks (offset 12)
    Load command 23
              cmd LC_RPATH
          cmdsize 56
             path @executable_path/../SharedFrameworks (offset 12)
    Load command 24
              cmd LC_RPATH
          cmdsize 40
             path @executable_path/../PlugIns (offset 12)
    

    使用 install_name_tool -delete_rpath <RPATH-from-otool-l-output>

    QT creator通常使用其软件包附带的库,而在您的目标系统上,这些库通常不存在。最好是编译 curl

    推荐文章