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();
}
沒有留言:
張貼留言