Не делай этого. Это не работает.
C ++ не определяет фиксированный ABI, поэтому вы вообще не можете передавать не POD-типы между библиотеками или модулями перевода, скомпилированными различными компиляторами.
В вашем случае VC6 и VC8 имеют разные определения std::string
(и компиляторы также могут вставлять разные дополнения и другие изменения), и в результате получается мусор, и / или непредсказуемое поведение и сбои.
Если вам нужно передать данные в библиотеку VC6 DLL (лучшим вариантом может быть перекомпиляция этого кода с помощью нормального компилятора), вы должны придерживаться типов, в которых вы можете быть уверены, что они будут работать. Это означает 1) типы POD (либо встроенные примитивы, такие как char*
, либо структуры C, содержащие только типы POD), либо объекты COM.