Usar DLL de C ++ con diferentes versiones de compilador

Esta pregunta está relacionada con"¿Cómo hacer binarios dll consistentes en las versiones VS?"

Tenemos aplicaciones y archivos DLL creados con VC6 y una nueva aplicación creada con VC9. La aplicación VC9 tiene que usar archivos DLL compilados con VC6, la mayoría de los cuales están escritos en C y uno en C ++.La biblioteca de C ++ es problemática debido a problemas de decoración / manipulación de nombres.Compilar todo con VC9 actualmente no es una opción, ya que parece haber algunos efectos secundarios. Resolverlos llevaría mucho tiempo.Puedo modificar la biblioteca de C ++, sin embargo, debe compilarse con VC6.La biblioteca de C ++ es esencialmente un contenedor OO para otra biblioteca de C. La aplicación VC9 utiliza algunas funciones estáticas, así como algunas no estáticas.

Si bien las funciones estáticas se pueden manejar con algo como

// Header file
class DLL_API Foo
{
    int init();
}

extern "C"
{
    int DLL_API Foo_init();
}

// Implementation file
int Foo_init()
{
    return Foo::init();
}

No es tan fácil con los métodos no estáticos.

Según lo entiendo,Chris Becke's La sugerencia de utilizar una interfaz tipo COM no me ayudará porque los nombres de los miembros de la interfaz seguirán decorados y, por lo tanto, serán inaccesibles desde un binario creado con un compilador diferente.¿Estoy justo ahí?

¿Sería la única solución escribir una interfaz DLL de estilo C usando controladores para los objetos o me falta algo? En ese caso, supongo, probablemente tendría menos esfuerzo usando directamente la biblioteca C envuelta.

Respuestas a la pregunta(5)

Su respuesta a la pregunta