Hallo,
ich habe gerade hier nachgesehen:
Delphi PChar -> C++
dort wird PChar als PWideChar deklariert.
Ich hatte das noch von früheren Delphies und C plus'sers in Erinnerung, das jeweils unter Delphi und C/C++ ein PChar einen char* entsprach - also beide die gleiche Bitbreite hatten. In modernen Sprachen, habe ich gerade mitbekommen, das PChar unter C++ tatsächlich 8-Bit entsprechen und null-terminiert sind.
Aber in modernen Anwendungen PWideChar - also mit 16-Byte pro Zeichen gearbeitet wird, was dann bedeutet, das 2 Zeichen verarbeitet werden. Nach dem eigentlichen Zeichen, auch bei UTF-8, ein null-Byte hinten drann kommt, und ebenfalls null-terminiert wird - aber halt mit null-null-Byte.
Jetzt fällt mir auch ein, das Windows 11 und frühere Versionen schon auf 16-Bit umgestellt haben, so dass in modernen Compilern aus utf-8, das eine Mixtur aus 8 und 16-Bit ist, generell auf 16-Bit breite arbeiten.
Bin halt nicht mehr der jüngste - und nicht mehr ub du dätde.
Schande über mein Haupt - und verzeiht mir
Der Tipp von Sinspin war also goldwert - Danke !
Edit:
Die C++ Version des getesteten Testes ist dann so lauffähig:
Code:
#include <windows.h>
#include <iostream>
#ifdef _WIN64
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT
#endif
extern "C" {
DLL_EXPORT void TestFunction(wchar_t* func) {
std::wcout << "Func: " << func << std::endl;
}
};