帮助PInvoke

时间:2009-10-20 22:57:56

标签: c# pinvoke

我得到了下一个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。

我做错了吗?

请帮忙。

3 个答案:

答案 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