用于使用 C++ 的类型编组类型
我想通过 C# 调用一个 C++ 函数(在 win32 .dll 中)。 C++ 函数是这样的:
bool pack(BYTE * messageFields[]);
该函数想要在输入参数的某些索引处填充一些数据(例如字符串或字节[])。 所以请告诉我 C#.NET 中的封送处理应该如何?我尝试了多种类型,但出现错误或对我的参数没有影响!
C# 代码必须打开本机 .DLL :
[DllImport("c:\\theDllName.dll")]
public static extern bool pack( // what is here? )
i wanna call a c++ function (in win32 .dll) by C#.
the c++ function in like this:
bool pack(BYTE * messageFields[]);
the function wants to fill some data (eg. a string or byte[]) at some indexes of the input argument.
so plz tell me how the marshaling should be in C#.NET? i tried many types but got errors or no effects to my parameter!
the C# code must open native .DLL :
[DllImport("c:\\theDllName.dll")]
public static extern bool pack( // what is here? )
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
System.Byte[] 可能是您正在寻找的。
抱歉,没有看到您有 BYTE* ...[]。
一些代码
在 C# 中:
我希望这会有所帮助,也许还有另一种更好/更简单的方法来做到这一点。请注意,该代码仅用于“说明”,可能包含错误。
基本上,传入一组 IntPtr 并手动编组......
System.Byte[] is what you are probably looking for.
Sorry didn'see you had BYTE* ...[].
Some code
And in C#:
I hope this helps, maybe there is another better/simpler way to do this. Please note that the code is only for "illustration" and might contain bugs.
Basically one passes in an array of IntPtrs and manually marshals...