C#调用C++dll 结构体参数传递问题

1、最近做项目遇到,C#调用C++dll里的函数需要传递结构体参数,发现这个并不是简单的在C#里定义相应的结构体就可以的,下面以一个例子来说明解决的办法,C++中的函数和结构体如下:


uint msec_set_igr_gen_cfg(int port, IGR_GEN_T *igr_gen)
{

return 0;
}


typedef struct {
  int aa_disable; /*/< authentiation adjust checking disable */
  int badtag_rej; /*/< reject packet if it is bypassed due to badtag */
  int pad_en; /*/< pad non-rejected packets up to 64B */
  int byp_ctl_sl; /*/< bypass packet if SL field does not correspond to packet len */
  int byp_ctl_v; /*/< bypass packet if V bit is set */
  int byp_ctl_sc; /*/< bypass packet if SC bit and either ES or SCB bits are set */
  int byp_ctl_ec; /*/< bypass packet if DC bits are not 00 or 11 */
  int sectag_flag; /*/< select which flag bit indicates that a SEC tag was present in pkt */
} IGR_GEN_T;


在C#中 首先需要使用Dllimport将相应的C++dll load进来,然后定义相应的结构体,具体如下:


        [DllImport("..\\debug\\mgd_MacSec.dll")]
        private static extern UInt32 msec_set_igr_gen_cfg(int

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值