【问题标题】:Linking Boost Filesystem in XCode 3.2 (MacPorts)在 XCode 3.2 (MacPorts) 中链接 Boost 文件系统
【发布时间】:2012-03-24 13:57:50
【问题描述】:

我正在使用 XCode 3.2 并已使用 MacPorts 项目(发布和调试)安装了 boost,但是我无法让我的应用程序与 boost::filesystem 链接

我已将我的库搜索路径设置为 /opt/local/lib,但在链接项目时我仍然得到未解析的引用。

我在另一篇文章中注意到将 -lboost_system 添加到“其他链接器标志”,但是当我这样做时,我得到 - libboost_system.dylib,文件是为不受支持的文件格式构建的,它不是被链接的体系结构 (i386)。

是 MacPorts 没有安装正确的库还是我缺少其他东西?

马丁

【问题讨论】:

    标签: xcode macos boost macports boost-filesystem


    【解决方案1】:

    您没有说明您构建它的操作系统版本。我的猜测是 MacPort 在构建和安装端口时默认为 x64。 Uninstall 来自 MacPort 的 boost 然后用通用的 variant 重新安装它。

    %% sudo port uninstall boost
    %% sudo port install boost +universal
    

    【讨论】:

    • 我刚刚注意到这个变种,现在正在测试它——正要发布我认为我找到了它。谢谢。很快就会回复。
    【解决方案2】:

    库的名称可能不完全是boost_system,但也可能是boost_system-mt-mt 是因为 boost 是使用线程安全编译的)甚至是其他一些后缀。

    可以肯定的是,您可以在/opt/local/lib 中查找名称:

    find /opt/local/lib -name "libboost_system*"
    

    【讨论】:

    • 我尝试了所有变体(-d / -mt / -mt-d),它们都给出了相同的错误。感谢您的建议。
    • 你试过find 建议的吗?结果如何?
    • 我得到 8 个文件:libboost_system-da、libboost_system-d.dylib、libboost_system-mt-da、libboost_system-mt-d.dylib、libboost_system-mt.a、libboost_system-mt.dylib、libboost_system .a,libboost_system.dylib,
    • 那么这可能是因为 MacPorts 确实使用错误的架构构建了 Boost。您可以更改 Xcode 项目的架构或通过为 MacPorts 提供适当的标志(必须有一个)来重新安装 Boost。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多