C#调用C++DLL 结构体内成员double* 成员变量数据类型匹配问题

Mad_Frog_ 2016-08-26 04:29:44
typedef struct __Band
{
double threshold;
double* pFreqs;
int numFreqs; //pFreqs的个数
__Band()
{
threshold = 0;
pFreqs = NULL;
numFreqs = 0;
}
}Band;

上面是C++的结构体定义

下面是我的 C# 定义
public struct Band
{
public double threshold;
public double[] pFreqs;
public int numFreqs;
}

但是联调的时候传进C++DLL源码的 参数 pFreqs 不对,其他两个参数数值正确,请问应该给结构体里的 pFreqs 定义什么类型。
谢谢
...全文
202 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mad_Frog_ 2016-08-29
  • 打赏
  • 举报
回复
引用 2 楼 From_TaiWan 的回复:
假设从C++函数返回的结果对象是band(结构Band的对象),可以参考下面

using System.Runtime.InteropServices;

double[] Arr = new double[band.numFreqs]; //用于接收返回结果的数组
Marshal.Copy(band.pFreqs, Arr, 0, Arr.Length);

//通过Arr,在程序中使用返回的结果

C# 调用C++接口,C#传band(结构Band的对象)到C++接口
秋的红果实 2016-08-27
  • 打赏
  • 举报
回复
不知道你是怎么调用的
秋的红果实 2016-08-27
  • 打赏
  • 举报
回复
假设从C++函数返回的结果对象是band(结构Band的对象),可以参考下面

using System.Runtime.InteropServices;

double[] Arr = new double[band.numFreqs]; //用于接收返回结果的数组
Marshal.Copy(band.pFreqs, Arr, 0, Arr.Length);

//通过Arr,在程序中使用返回的结果

Poopaye 2016-08-26
  • 打赏
  • 举报
回复
public IntPtr pFreqs; 然后用Marshal.Copy复制到double[]中

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧