Использование C ++ DLL с различными версиями компилятора

Этот вопрос связан с"Как сделать совместимые двоичные файлы DLL в версиях VS?"

У нас есть приложения и библиотеки DLL, созданные с помощью VC6, и новое приложение, созданное с помощью VC9. Приложение VC9 должно использовать библиотеки DLL, скомпилированные с VC6, большинство из которых написаны на C, а одна на C ++.C ++ lib проблематичен из-за проблем с оформлением / искажением имен.Компиляция всего с VC9 в настоящее время не вариант, поскольку есть некоторые побочные эффекты. Для их решения было бы довольно много времени.Я могу изменить библиотеку C ++, однако она должна быть скомпилирована с VC6.C ++ lib по сути является OO-оболочкой для другой библиотеки C. Приложение VC9 использует некоторые статические функции, а также некоторые нестатические.

В то время как статические функции могут быть обработаны с чем-то вроде

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

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

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

это не так просто с нестатическими методами.

Как я понимаю,Крис Бекке Предложение использования COM-подобного интерфейса мне не поможет, потому что имена членов интерфейса будут по-прежнему оформлены и, следовательно, недоступны из двоичного файла, созданного с помощью другого компилятора.Я тут прав?

Будет ли единственным решением написать интерфейс DLL в стиле C, используя обработчики объектов, или я что-то упустил? В этом случае, я думаю, у меня, вероятно, будет меньше усилий с непосредственным использованием обернутой C-библиотеки.