Estoy desarrollando una aplicación en C++ 11, usando g ++ - 4.7 y -std = C++ 0x.
Mi aplicación está vinculada a una biblioteca compartida compilada con g ++ - 4.7, pero sin la directiva -std = C++ 0x.Compatibilidad de biblioteca entre C++ 11 y C++ 03
Lamentablemente, nada funciona, lo que significa que tengo un comportamiento extraño cuando uso las clases y los métodos de la biblioteca externa. (Por supuesto, compilar mi aplicación sin -std = C++ 0x funciona bien).
¿Es esto un comportamiento esperado o es un error del compilador?
Cualquier solución (algo así como la palabra clave
extern
C)?
¿Por qué no puedes recompilar la biblioteca con '-std = C++ 0x'? – leftaroundabout
Es claramente una violación del requisito de que todas las unidades de traducción vean el mismo código si compila una TU con una vista de los encabezados de la biblioteca y otra TU con una vista diferente. –
Compilar con diferentes banderas es uno de los caminos más cortos hacia la locura. Está más o menos bien para advertencias y niveles de optimización, pero cuando afecta la interpretación del código fuente o el diseño de los binarios producidos ... zumbido. –