Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: WideString aus C++ DLL-Methode an Delphi-Host zurückgebe

  Alt 16. Jul 2009, 13:32
Dein Code aus #12 war schon fast richtig. Die Zuweisung in der vorletzten Zeile wird nur nicht an den Aufrufer durchgereicht, daher sollte das so aussehen:
Code:
DECLDIR void /*!*/ EXTP_GetPlugInName( LPCWSTR* /*!*/ result )
{         
LPWSTR buffer = NULL;
int size = MultiByteToWideChar( CP_ACP, 0, "MyPluginName", -1, NULL, 0 );
buffer = (WCHAR*) malloc( sizeof( WCHAR ) * size );
MultiByteToWideChar( CP_ACP, 0, "MyPluginName", -1, buffer, size );
*result /*!*/ = SysAllocStringLen( buffer, size );
free(buffer); //!
}
Der Rückgabetyp der Funktion sollte void sein. Außerdem solltest du buffer wieder freigeben.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat