2009-07-22 11 views
3

私は、Windows上でtdm-mingw g ++ 4.4.0の-std = gnu ++ 0xパラメータで構築されたアプリケーションを持っています。gstream ++と-std = gnu ++のfstreamリンクエラー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のオブジェクトを作成しています:それは結構コンパイルなっている

​​

が、リンクされ得ていません。

+2

このエラーの原因となるコードを投稿してください。 –

答えて

3

私はあなたがこのようないくつかのコードを持っていることを推測する:

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

にそれを変更してみてくださいを:

ifstream ifs(fname.c_str()); 

使用しているヘッダファイルが多少と調子が悪い場合、これは起こることができますあなたがリンクしているライブラリ。これで問題が解決しない場合は、問題の原因となるコードを投稿してください。

+1

その変更が有効であっても、これは現在のように非常に満足できる解決策ではありません。 C++ 0Xモードでビルドするには、新しいC++ 0X機能を使用しないでください。実際の解決策にはおそらく 'g ++'のコマンドスイッチを使うか、適切な場所にファイルを置くことが必要です。 –

+1

私は提案されたC++ 0X標準に対して真の解決策を構築している人は誰も誤っていると思います。忘れてはいけないのは、そのようなことに対して包括的なコードを作成することですが、既存の標準やその標準をしっかりサポートしている完全なコードに対して実際のコードを作ります。 –

+0

新しいC++ 0x機能は何ですか? – GManNickG

関連する問題