3

Windows の tdm-mingw g++ 4.4.0 で -std=gnu++0x パラメータを使用してアプリケーションをビルドしました。

これは ofstream オブジェクトを使用しており、ビルドすると次のリンク エラーが発生します。

c:\opt\Noddler/main_func.cpp:43: undefined reference to `std::basic_ofstream<char, std::char_traits<char> >::basic_ofstream(std::string const&, std::_Ios_Openmode)'

デフォルトの古い標準を使用すると、適切にビルドされます。

これが唯一のエラーであり、-lstdc++ でリンクしようとしても役に立ちません。誰かがこれを経験したことがありますか?何か提案はありますか?

編集:次のような ofstream オブジェクトを作成しています:

std::string filename = string("noddler\\") + callobj.get_ucid() + "_" + callobj.gram_counter() + ".grxml";
ofstream grxml_file(string("C:\\CWorld\\Server\\Grammar\\") + filename);
...
grxml_file.close();

うまくコンパイルされていますが、リンクされていません。

4

1 に答える 1

3

次のようなコードがあると思います。

string fname = "foo.txt";
ifstream ifs( fname );

次のように変更してみてください。

ifstream ifs( fname.c_str() );

これは、使用しているヘッダー ファイルが、リンク先のライブラリと多少一致していない場合に発生する可能性があります。これが機能しない場合は、問題の原因となっているコードを投稿してください。

于 2009-07-22T13:54:23.490 に答える