2012-07-31 11 views
5

Sto cercando di costruire muParser sul mac, ha funzionato fino a quando ho aggiornato XCode a 4.4 quale aggiornato gcc. Ora ho la seguente riga di codice che genera l'errore che non capisco:Cercando di costruire muParser: errore: istanza esplicita di 'std :: basic_ostream ma nessuna definizione disponibile

mu::console() << _T(" \"") << val.GetAsString() << _T("\" "); 

../muparser/src/muParserBase.cpp:1823: instantiated from here 
../muparser/src/muParserBase.cpp:1823: error: explicit instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' but no definition available 
../muparser/src/muParserBase.cpp: In instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]': 
../muparser/src/muParserBase.cpp:1823: instantiated from here 
../muparser/src/muParserBase.cpp:1823: error: explicit instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' but no definition available 
../muparser/src/muParserBase.cpp: In instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]': 
../muparser/src/muParserBase.cpp:1823: instantiated from here 
../muparser/src/muParserBase.cpp:1823: error: explicit instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' but no definition available 
../muparser/src/muParserBase.cpp: In instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]': 
../muparser/src/muParserBase.cpp:1823: instantiated from here 
../muparser/src/muParserBase.cpp:1823: error: explicit instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' but no definition available 

mu::console() è definiscono come:

inline std::ostream& console() 
{ 
    return std::cout; 
} 

_T è #define _T(x) x

e GetAsString

const TString& GetAsString() const 
    { 
    return m_strTok; 
    } 

TString è un std::string

È la chiamata a GetAsString che causa il problema. hai qualche idea su come aggiustarlo?

+0

Ecco il Makefile generato da Qt Creator: http://pastebin.com/raw.php?i=NpXKqpLD –

risposta

0

Sembra che tu stia collegando la libreria standard sbagliata o includendo gli include C++ sbagliati. Dovrai assicurarti che le intestazioni C++ del percorso di inclusione corrispondano alla libreria standard che stai collegando.

Se pubblichi il file di build, posso aiutarti a vedere se c'è una mancata corrispondenza.

9

Aggiungere queste due righe al file .pro e l'errore andrà via:

QMAKE_CFLAGS_X86_64 += -mmacosx-version-min=10.7 
QMAKE_CXXFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64 
+1

Cosa succede se voglio che i miei binari siano compatibili con Mac OS X 10.4? –

+0

Funziona perfettamente per me. Grazie! – nkint

0

Quando ho aggiornato a XCode 4.4.x, sono stati rimossi gli strumenti della riga di comando. In XCode, mi occupo di XCode> Preferenze, ho selezionato la scheda Download e ho scaricato nuovamente "Command Line Tools" e poi le cose hanno ripreso a funzionare. Forse questo risolverà anche il tuo problema?

Problemi correlati