教職員のサーバーで C++ プロジェクトを実行する際に問題があります。私が得る実行時エラーはこれです:
terminate called after throwing an instance of 'std::runtime_error'
what(): locale::facet::_S_create_c_locale name not valid
Aborted (core dumped)
私は、問題がこのファイルシステム イテレータのどこかにあると判断しました (テスト プログラムを利用することにより)。
bf::path dir("ImageData/" + m_object_type);
vector<bf::path> tmp;
copy(bf::directory_iterator(dir), bf::directory_iterator(), back_inserter(tmp));
sort(tmp.begin(), tmp.end());
for (vector<bf::path>::const_iterator it(tmp.begin()); it != tmp.end(); ++it)
{
auto name = *it;
image_names.push_back(name.string());
}
このプログラムは、他の 2 つの Linux ベースのシステム (kubuntu と linux mint で実行しましたが、私のプロジェクトは実行時間が非常に長く、別のパラメーターで実行すると、私のマシンで約 28 日かかるため、実際にサーバーを使用したいと考えています) で完全に実行されました。すでにさまざまな方法を試しましたが、どれもうまくいきませんでした。1.47 より前にこのエラーを引き起こしたブースト バグについて読みましたが、サーバーでは 1.54 を使用しています。システム ロケールも確認しましたが、私のシステムとほぼ同じであるため、実際には手がかりが得られませんでした。サーバーのその他の仕様は次のとおりです。
Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic x86_64) g/c++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
誰かが共有するアイデアを持っているなら、私はそれを感謝します.