我得到了下一个c函数:
long _stdcall _MakePipeString(char *szOut, long nOutChars, const char *szXmlFile, long nOptions);
我试着像这样使用pInvioke:
[DllImport("diXo10.dll")]
public static extern long _MakePipeString(out StringBuilder szOut, out long nOutChars, string szXmlFile, long nOptions);
但是我在输出变量szOut中得到null。
我做错了吗?
请帮忙。
答案 0 :(得分:1)
除了其他人所说的内容之外,在C#端将长整数更改为整数。
答案 1 :(得分:0)
你试过了吗?
[DllImport("diXo10.dll")]
public static extern long _MakePipeString([MarshalAs(UnmanagedType.LPStr)] out String szOut, out long nOutChars, [MarshalAs(UnmanagedType.LPStr)] string szXmlFile, long nOptions);
请注意,您可能还需要指定是否需要ANSI或Unicode(UTF16)字符,例如使用LPTStr / LPWStr而不是LPStr或DllImport attribute。
答案 2 :(得分:0)
尝试不使用out
参数。
请参阅here。