在C#中調用別人的DLL的時候有時候出現 嘗試讀取或寫入受保護的內存 。這通常指示其他內存已損壞。
在傳值的時候還是用指針,再在C#中做轉換就好了。
解決辦法:
[DllImport("APPLISTCC.dll")]
public static extern string TestFunc1(string param1);
string ret1 = TestFunc1("text");
改成:
[DllImport("APPLISTCC.dll")]
public static extern IntPtr TestFunc1(IntPtr par1);
IntPtr ptrIn = Marshal.StringToHGlobalAnsi("text");
IntPtr ptrRet = TestFunc1(ptrIn);
string retlust = Marshal.PtrToStringAnsi(ptrRet);