Una de mis principales quejas sobre C ++ es lo difícil que es en la práctica pasar los objetos de la biblioteca estándar fuera de los límites de la biblioteca dinámica (es decir, dll / so).
La biblioteca estándar a menudo es solo de encabezado. Lo cual es genial para hacer algunas optimizaciones increíbles. Sin embargo, para los dll, a menudo se crean con diferentes configuraciones de compilador que pueden afectar la estructura / código interno de los contenedores de una biblioteca estándar. Por ejemplo, en MSVC, un dll puede compilarse con la depuración del iterador activada mientras que otro construye con él desactivado. Estos dos dlls pueden tener problemas para pasar contenedores estándar. Si expongo std::string
en mi interfaz, no puedo garantizar que el código que utiliza el cliente std::string
coincida exactamente con el de mi biblioteca std::string
.
Esto lleva a problemas difíciles de depurar, dolores de cabeza, etc. Usted controla rígidamente la configuración del compilador en su organización para evitar estos problemas o utiliza una interfaz C más simple que no tendrá estos problemas. O especifique a sus clientes la configuración esperada del compilador que deberían usar (lo que apesta si otra biblioteca especifica otras configuraciones del compilador).
Mi pregunta es si C ++ 11 intentó hacer algo para resolver estos problemas.
DLL
s. Entre SO
s siempre funcionó bien.