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。
我做错了吗?
请帮忙。
I got the next c function:
long _stdcall _MakePipeString(char *szOut, long nOutChars, const char *szXmlFile, long nOptions);
And I try to use pInvioke like this:
[DllImport("diXo10.dll")]
public static extern long _MakePipeString(out StringBuilder szOut, out long nOutChars, string szXmlFile, long nOptions);
But i get null in the ouput variable szOut.
Am I doing wrong?
Please help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
除了其他人所说的之外,在 C# 端将 long 更改为 int。
In additions to what others have said, change the longs to ints on the C# side.
您是否尝试过:
请注意,您可能还必须指定是否需要 ANSI 或 Unicode(UTF16) 字符,例如使用 LPTStr/LPWStr 而不是 LPStr 或在 DllImport 属性。
Have you tried:
Note that you may also have to specify whether you expect ANSI or Unicode(UTF16) characters, for instance by using LPTStr/LPWStr instead of LPStr or on the DllImport attribute.
尝试不使用
out
参数。请参阅此处。
try without the
out
parameter.see here.