我有一個問題,調用C DLL FOM C#本機C-DLL/C#中AccessViolation編組
C函數是(我沒有C頭還是不錯的規格爲這個:()
int knr12_read (char *kn12, char *ik9, char *wok, char *wlc,
char *plz, char *ort, char *woz);
kn12是ref參數
這是我在C#中
[return: MarshalAs(UnmanagedType.U4)]
[DllImport("Knr12.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "knr12_read", CharSet = CharSet.Ansi)]
unsafe public static extern int knr12_read(out IntPtr buffer, string ik9, string wok, string wlc, string plz, string ort, string woz);
int knr = knr12_read(out pBuffer, knrTemp, "11111", "", "98529", "Suhl", "1");
string data = Marshal.PtrToStringAnsi(pBuffer);
已經試過返回的int是人正確的方法,應該如何,但我有裁判參數p緩衝器問題...
而且對其他變量的刺痛類型的工作...
當我使用一個ref
,我總是得到我用out
的AccessViolation error
knr12_read()
。在情況下,我得到一個指針,但字符串總是空的,不能be.I甚至嘗試了String
作爲ref
爲char*
,但我得到knr12_read()
的AccessViolation error
。
請指導。
這也許值得補充,如果「C」代碼將保持指針返回後,這僅僅是必要的。 –