none
In-Out Parameter bei verschiedenen CRT Dll Versionen

    Frage

  • Hallo,

    das Problem an sich ist schon recht alt. Eine mit VS 2010 kompilierte DLL allokiert Speicher und übergibt als IN/OUT Parameter via COM Automation Aufruf an eine DLL, die mit VisualBasic 6.0 kompiliert wurde. Die DLL hält sich an die COM Memory Management Regeln, gibt den Parameter frei allokiert ihn neu (andere CRT dll) und gibt ihn zurück. Der Aufrufer findet die modifizierten Parameter und gibt ihn nach dem Aufruf frei.

    Ergebnis ... Heap damaged.

    Ich habe ein wenig gegoogelt und auch im Forum gesucht, aber bisher leider keine Lösung für das Problem gefunden.

    Ich habe auch als Aufrufer leider keinerlei Informationen über die DLL, da ich nur mit einer COM Componente rede, die ich vorher nicht kenne. (Es handelt sich um ein COM Framework). Ich kann also auch die Exe nicht an die DLL anpassen, abgesehen davon wäre dies eh keine Lösung, da ich ggf. auch zwei mit verschiedenen VisualStudio Versionen kompilierte COM  Komponenten gleichzeitig ansprechen könnte. 

    Weiß irgend jemand, ob es mittlerweile ein Rezept für CRT Versionsproblem gibt?

    Vielen Dank schonmal im Voraus und viele Grüße,
    Alex

    Donnerstag, 23. Februar 2012 08:47

Antworten

Alle Antworten