我正在尝试运行一个使用boost文件系统的helloworld程序。 我在装有MinGW 8.1和Boost 1.70的Windows上。 问题是,尽管所有内容都能编译,但程序无法运行。我的意思是,它可以运行但不输出任何内容,这意味着主要功能甚至都没有执行:
#include <boost/filesystem.hpp>
#include <iostream>
using namespace std;
using namespace std::string_literals;
namespace fs = boost::filesystem;
int main()
{
cout << "Hello Boost!" << endl;
fs::path abHome{"C:/Users/Me"s};
fs::path jsonFile = abHome / "jsonFile.json"s;
if (!fs::exists(jsonFile)) {
cout << "Creating json file from scratch." << endl;
}
}
“ Hello Boost”从未打印到控制台。 我已经从命令行使用CMake和g ++进行了编译,以试图更好地了解发生了什么:
g ++ main.cpp -o main -L“ C:/ Code / boost_1_70_0 / stage / lib” -lboost_filesystem-mgw81-mt-x64-1_70 -lboost_system-mgw81-mt-x64-1_70 -I“ C:/代码/ boost_1_70_0“
我已经按照指南编译了MinGW的Boost,一切都进行得很好,在输出文件夹中,我看到了基于默认目标的每个库的许多不同版本(我还没有真正选择它们,只是使用了默认值) )。
如何调试main.exe的启动以查看导致崩溃的原因?自编写C ++以来已经有很多年了,所以我需要帮助才能回到正轨! :)
答案 0 :(得分:0)
正如@kenba指出的那样,问题是boost dll的 dynamic 链接失败。 我错误地认为我已经链接了Boost库的静态版本。 要实际实现这一点,我应该使用以下命令:
g++ main.cpp -o main -L"C:/Code/boost_1_70_0/stage/lib" -l:"libboost_filesystem-mgw81-mt-x64-1_70.a" -l:"libboost_system-mgw81-mt-x64-1_70.a" -I"C:/Code/boost_1_70_0"
而不是我在OP中发布的那个。