C++动态库返回char*C#调用失败问题

用C++写了一个动态库,返回一个结构体,结构体如下:

typedef struct
{
unsigned long Width;
void* pixelData;
char* modality;
}rreadData;

在用C#调用时,用如下结构体接收:

public struct readData
    {
        public UInt32 Width;
        public IntPtr pixelData;
        public string modality;
    };

总是报错:方法的类型签名与 PInvoke 不兼容。

试了好多方法,都不行,最后看到有网友说用IntPtr代替string,于是将C#结构体改成如下:

public struct readData
    {
        public UInt32 Width;
        public IntPtr pixelData;
        public IntPtr modality;
    };

这样就不报错了,可是这样在结构体中就没有获取需要的值,再经过如下转换即可:

  string modality = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(readData.modality);

记录下来,希望能帮到遇到同样问题的人。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值