尝试在 Codeblocks 上使用 Boost 库会给出未定义的引用

Trying to use Boost library on Codeblocks gives an undefined reference

提问人:David 提问时间:12/31/2019 更新时间:1/5/2020 访问量:263

问:

我正在尝试在 CodeBlocks 上使用 boost 库,但我是新手,我似乎无法正确链接它。

boost 文件夹(版本 1.70)在我的 main.cpp 的同一个文件夹中,我尝试访问的库是 libboost_filesystem-mgw92-mt-x64-1_70.a;

这是我的代码:

#include <iostream>
#include <boost/filesystem.hpp>


int main()
{

    boost::filesystem::path l_path("C:\\Hello.txt");
    if(boost::filesystem::exists(l_path))
        {
        std::cout<<"exists!"<<std::endl;
        }
        else
        {
        std::cout<<"no";
        }
    return 0;
}

以及我的设置和错误的一些屏幕截图

The linker settings

The search Directories for compiler an linker(both the same)

And a screenshot of the error

谢谢!

C++ Boost CodeBlocks undefined-reference

评论

0赞 Jesper Juhl 12/31/2019
什么是未定义的引用/未解析的外部符号错误,如何解决?
1赞 David 12/31/2019
我知道什么是未定义的参考,如果可能的话,我希望得到一些切实的帮助。我已经尽一切可能提供有关我正在做的事情的信息,我很乐意根据要求提供更多信息。

答:

1赞 chwala 1/5/2020 #1

对 _Unwind_Resume 的未定义引用建议您使用与项目不同的编译器构建 Boost,或者选择不同类型的异常处理。

检查在这两种情况下是否使用相同的编译器。

这也可能是由于使用 gcc 而不是 g++ 构建项目所致。你也应该检查一下。在这种情况下,切换到 g++ 或通过添加编译器标志来显式链接到 libstdc++。-lstdc++

评论

0赞 David 1/5/2020
谢谢你的回答!你是对的,我使用了不同的编译器,所以可能这就是原因。我现在正在使用 Visual Studio,一旦我对它有信心,我就会再试一次,这次我会非常小心地使用相同的编译器,我会看看错误是否再次弹出