[VC++ 6] CString aus DLL exportieren

ManicMarble

Erfahrenes Mitglied
Hallo,
ich hätte gerne einen Pointer auf den Inhalt eines CString-MFC-Objekts als Rückgabewert aus einer DLL. Den Pointer krieg' ich, aber der Inhalt ist bis dahin futsch, d.h. der Pointer pointet auf Datenmüll.
Ich nehme an das kommt daher, dass das CString-Objekt beim Verlassen der Funktion zerstört wird.

Meine Lösung bisher: Ich kopiere den Inhalt vom CString in einen LPSTR und gebe diesen zurück. Ok, das funktioniert im Prinzip.
PHP:
CString retVal;
...
...(Bearbeitung von retVal) ...
...
LPSTR ret = new CHAR[retVal.GetLength()+1];
strcpy(ret, retVal);
return ret;
Da diese DLL-Funktion aber von der externen Anwendung vornehmlich innerhalb von (langen) Schleifen aufgerufen wird, und das z.T. auch zig-tausendmal hintereinander, ist diese Kopiererei eigentlich doch ziemlich unschön und Performance-raubend, oder?

Aber wie sonst krieg' ich den CString (als LPSTR oder LPCTSTR) aus der DLL raus?

Martin
 
Du könntest den CString generell der DLL geben, und die hängt dann da ihren Text rein.

void DLLFunktion( CString& cstrGibMich )
{
cstrGibMich += "Hurz";
}


Bin mir aber in deiner alten Methode und der neuen nicht sicher, ob das mit dem Heap sauber läuft. Kann sein, dass das noch Probleme gibt.
 

Neue Beiträge

Zurück