visual-studio - una - librerias de visual studio
Mezcla de bibliotecas estáticas de código C creadas a partir de diferentes versiones de Visual Studio 2002 y posterior (1)
La mezcla de C runtimes no me ha funcionado en el pasado. La única manera en que puedo ver que esto funciona {tal vez} es si estás completamente aislando el uso de la pila / montón dentro de los límites del C-Runtime enlazado estáticamente [nada cruza los límites mediante parámetros, pero ¿qué valor tiene tu vs2009if9? .lib proporcionando].
Como ejemplo, si debe asignar un puntero [memoria dinámica] dentro de la aplicación y pasar este puntero a la biblioteca que proporcionó, ¿qué gestor de pila debe usarse? La respuesta correcta es el administrador de montón que administra el puntero, pero su biblioteca no sabrá sobre el otro administrador de montón. Se pone más feo si su biblioteca asigna memoria para uso de la aplicación y es la responsabilidad de las aplicaciones para liberar / eliminar utilizando el puntero proporcionado (mal diseño sí, pero aún es posible). De nuevo, se utilizará el administrador de montón incorrecto.
Tengo una biblioteca estática enlazable de rutinas C y Fortran compiladas y vinculadas utilizando el compilador Visual Studio 2002 C (v7.0) y el compilador Intel Fortran 9.0.018.
El código C en mi biblioteca llama y enlaza con las bibliotecas estáticas Microsoft C-RunTime (MSCRT) 2002 (de un solo subproceso). Creo que el número de versión real de las bibliotecas CRT 2002 es v7.0
Me referiré a esta biblioteca estática como "vs2002if9.lib"
¿Puedo vincular estáticamente mi "vs2002if9.lib" de forma segura usando cualquier versión posterior de Visual Studio (2003, 2005 o 2008) sin ninguna preocupación sobre cómo se comporta el programa de llamadas con respecto a las llamadas en tiempo de ejecución de C?
¿O estoy creando problemas al mezclar la versión de las librerías estáticas de CRT?
¿Qué sucede si ofrezco mi "vs2002if9.lib" a desarrolladores de software de terceros? ¿Qué requisitos les estoy imponiendo?