fstream collega errore di g ++ con -std = gnu ++ 0x
Domanda
Sono hanno un'applicazione creata con la -std = gnu ++ 0x parametro nel TDM-MinGW g ++ 4.4.0 su Windows.
Si sta usando un oggetto ofstream e quando costruire, dà il seguente errore di collegamento:
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)'
Si costruisce correttamente quando si utilizza lo standard di default più vecchio.
Questo è l'unico errore e cercando di collegare con ++ -lstdc non aiuta. qualcuno ha sperimentato prima? Posso ottenere qualche suggerimento?
Modifica: Sto creando un oggetto ofstream in questo modo:
std::string filename = string("noddler\\") + callobj.get_ucid() + "_" + callobj.gram_counter() + ".grxml";
ofstream grxml_file(string("C:\\CWorld\\Server\\Grammar\\") + filename);
...
grxml_file.close();
Si è sempre compilato bene, ma non sempre legata.
Soluzione
Direi che hai qualche codice come questo:
string fname = "foo.txt";
ifstream ifs( fname );
Prova a cambiarlo con:
ifstream ifs( fname.c_str() );
Questo potrebbe accadere se i file di intestazione che si sta utilizzando sono un po 'fuori di colpo con le librerie che si sta facendo riferimento. E se questo non funziona, inserire il codice che causa il problema.