首页 新闻 赞助 找找看

C#调用C++DLL结构体内含数组类型转换

0
悬赏园豆:20 [待解决问题]

C#调用C++的DLL,返回一个结构体,C++的结构体如下:
typedef struct
{
  int     wg_reason[10];
  String  wg_Watt[10];
  String  wg_time[10];
} Inf_RWGJL ;
然后我在用C#定义的结构体如下:
[StructLayout(LayoutKind.Sequential)]
    public struct WGJL
    {
        [MarshalAs( UnmanagedType.ByValArray, SizeConst = 10)]
        public int[] wgyy;

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
        public string[] wggl;

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
        public string[] wgsj;
    }
不知道哪个定义的不正确,返回报错:方法的类型签名与 PInvoke 不兼容。

booer的主页 booer | 初学一级 | 园豆:182
提问于:2014-04-18 09:36
< >
分享
所有回答(1)
0

这个里面有 “String” 这种对象级的数据结构, 它不能简单的映射成C#的string。  不知道String的结构定义方式这里没法给出正确的形式的。

天方 | 园豆:5407 (大侠五级) | 2014-04-26 14:06

是啊,经过调查,对方使用的是C++ builder 里的AnsiString ,所以我定义了int[]整形数组来接收地址,然后再从这个地址取出相应的字符串。

支持(0) 反对(0) booer | 园豆:182 (初学一级) | 2014-04-28 10:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册