我在调用 C# 中的 C DLL 时遇到问题
C 函数是(我没有 ac 标头或对此的好的规范:()
int knr12_read ( char *kn12, char *ik9, char *wok, char *wlc,
char *plz, char *ort, char *woz );
kn12 是一个参考参数
这是我在 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 总是正确的,应该如何,但我对 ref 参数 pBuffer 有问题...
其他变量的刺痛类型也在工作......
当我使用 aref
时,我总是得到一个AccessViolation error
knr12_read()
。如果我使用out
我得到一个指针,但字符串总是空的,这是不可能的。我什至尝试了asString
但我得到了一个on 。ref
char*
AccessViolation error
knr12_read()
请指导。