我需要调用从dll导入的c函数。我可以找到如何导入api函数,但我不确定如何编组函数期望的所有类型作为参数。特别是指针类型。如何在C中调用C dll函数时编组指针类型#
实例函数签名可能是......
RESULT_TYPE get_signal_value(SIG * SIG,字符*名称,INT *值);
其中SIG是包含各种项目的结构。例如。 struct SIG char sig_id [16]; int sig_ptr; HW_ADDR_TYPE hw_info; };
和
结构HW_ADDRESS_TYPE { 短channel_no; unsigned char chassis; unsigned char slot; unsigned char link; 无符号字符填充符; };
我可以发现,编组这种类型的我需要描述结构布局...
[StructLayout(LayoutKind.Sequential)] 公共类HW_ADDRESS_TYPE { 短channel_no; 字节机箱; 字节槽; 字节链接; 字节填充符; };公共类INT { public const int LEN_SID = 16; [MarshalAs(UnmanagedType.ByValTStr,SizeConst = LEN_SID)] public string sig_id; int sig_ptr; HW_ADDRESS_TYPE hw_info; };
但这里似乎有问题。我做对了吗?
在示例中与int *相同。
任何帮助将是伟大的。干杯!
你可以更具体的复查。结构的布局?你是否说要编制一个指针值你不得不做什么?请参阅编辑的问题... – user226356 2010-02-04 11:58:12
在C#中为'SIG'和'HW_ADDRESS_TYPE'类型尝试使用'struct'而不是'class', – 2010-02-04 14:36:41