Sto sviluppando un'applicazione in C++ 11, utilizzando g ++ - 4.7 e -std = C++ 0x.
La mia app è collegata a una libreria condivisa compilata con g ++ - 4.7, ma senza la direttiva -std = C++ 0x.Compatibilità di libreria tra C++ 11 e C++ 03
Sfortunatamente, non funziona nulla, nel senso che ho un comportamento strano quando utilizzo le classi e i metodi della libreria esterna. (Naturalmente compilando la mia app senza -std = C++ 0x funziona bene).
Si tratta di un comportamento previsto o di un errore del compilatore?
Qualsiasi soluzione (qualcosa come la parola chiave
extern
C)?
Perché non è possibile ricompilare la libreria con '-std = C++ 0x'? – leftaroundabout
È chiaramente una violazione del requisito che tutte le unità di traduzione vedano lo stesso codice se si compila una TU con una vista delle intestazioni della libreria e un'altra TU con una vista diversa. –
Compilare con bandiere diverse è uno dei percorsi più brevi verso la follia. È più o meno ok per avvisi e livelli di ottimizzazione, ma quando influenza l'interpretazione del codice sorgente o il layout dei binari prodotti ... hum. –