在c#中编组c结构
我有一个’C”DLL’可以将结构作为输入,我必须从我的c#程序中调用该DLL
以下是我在c中的示例结构,我必须在我的c#代码中编组这些结构
我在做对还是错?
实际C结构:
typedef struct procedure { char code[8]; }procedure; typedef struct datefield { char date[10]; }datefield; typedef struct p45_clsgs { procedure p45_clsg; datefield p45_clsgdte; }p45_clsgs;
C#:
[StructLayout(LayoutKind.Sequential), Serializable] struct procedure { //char code[]; [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 8)] public string code; } [StructLayout(LayoutKind.Sequential), Serializable] struct datefield { //char date[10]; [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 10)] public string date; } struct p45_clsgs { public procedure p45_clsg; public datefield p45_clsgdte; }
我的C#结构对于C结构是否正确?
什么是fallowing c结构的等效C#结构
typedef struct p45_cldxed24 { procedure p45_cldxed[8]; }p45_cldxed24;
(抓我原来的答案)
你需要在每个结构的顶部有这个:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
请注意CharSet
命名参数。 这很重要,否则你最终会使用wchar_t数组而不是char数组。
鉴于你不知道它是否有效,很难肯定地说! 无论如何,它看起来对我来说是正确的。
我的建议是简单地测试你在这里展示的结构,确保它看起来像你期望的那样运行。 然后开始创建其他100个左右的结构。
如果有帮助,请查看Marshal C ++ struct array到C#及其中的链接。
上述就是C#学习教程:在c#中编组c结构分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1016668.html