【问题标题】:Visual Studio linker cannot find libboost_systemVisual Studio 链接器找不到 libboost_system
【发布时间】:2011-07-02 20:44:02
【问题描述】:

我正在使用 VS 2008 并想使用 boost::asio 库。 我可以让它在一个新项目中工作(我想包括 boost/bind.hpp 和 boost/asio.hpp),但在现有项目中我得到这个错误:

致命错误 LNK1104:找不到 Datei "libboost_system-vc90-mt-sgd-1_46.lib"。

我在 boost 目录中找不到这个文件,但是这个:libboost_system-vc90-mt-gd-1_46.lib (gd 而不是 sgd) 这意味着什么?

谢谢!

【问题讨论】:

    标签: c++ visual-studio-2008 boost linker boost-asio


    【解决方案1】:

    我假设您使用过 BoostPro 的 Boost 安装程序。如果是这样,请重新安装它并确保选择Multithread Debug, static runtime

    【讨论】:

      【解决方案2】:

      Boost names its libraries based on what options were used in compiling them。例如,“mt”表示“多线程运行时”;而且我相信您可以弄清楚“vc90”的含义(与“gcc4”相比)。我认为“s”的意思是“静态的”。

      您的解决方案是首先确保您使用的选项与构建库时使用的选项相同,然后在项目选项中更改您要链接的文件的名称。

      【讨论】:

        【解决方案3】:

        这意味着您必须转到项目属性并更改当前包含用于链接的 boost 库的名称。如果你有 libboost_system-vc90-mt-gd-1_46.lib,你应该使用它。

        Configuration Properties => Linker => Input => Additional dependencies
        

        【讨论】:

        • 对于某些编译器(VC++2008 就是其中之一)Boost.Asio 会自动链接 (#pragma link),因此无需添加额外的库。
        • @eugen +1 表示正确,-1 表示与#pragma 注释库混淆:) - #pragma 链接在 VS 上不受支持。 msdn.microsoft.com/en-us/library/d9x1s805(v=VS.100).aspx
        • @Hertzel:感谢您的澄清和链接,我确实把它们弄混了。
        猜你喜欢
        • 2015-02-10
        • 2019-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多