2009-08-31 C# get a string from C++ DLL 9136 0 .NETCF 2009-09-08 摘要:C# get a string from a C++ DLL 以前在 MSDN 上的討論串,搬到這裡做備忘。範例程式碼在此:gpDllNet.rarC++ DLL :TCHAR g_awcMessage[] = L"Hello中文"; char g_aszMessage[] = "Hello中文"; extern "C" __declspec(dllexport) TCHAR* __stdcall GetHelloL() ...{ return g_awcMessage; } extern "C" __declspec(dllexport) CHAR* __stdcall GetHello() ...{ return g_aszMessage; } extern "C" __declspec(dllexport) int __stdcall GetInt() ...{ return 100; }C# P/Invoke:[DllImport("gpDll.dll")] public static extern IntPtr GetHello(); [DllImport("gpDll.dll")] public static extern IntPtr GetHelloL(); [DllImport("gpDll.dll")] public static extern int GetInt(); private void button1_Click(object sender, EventArgs e) ...{ // Not support in CF //Marshal.PtrToStringAnsi //Marshal.PtrToStringAuto // Multibytes 會變成亂碼 string str = Marshal.PtrToStringUni(GetHello()); // Wide Character 顯示正常 string strL = Marshal.PtrToStringUni(GetHelloL()); int n = GetInt(); } Trouble Shooting 回首頁