PInvoke 返回带有二维数组的结构

2024-02-09

我有定义在的结构c++ /questions/tagged/c%2b%2bWin32 DLL 如下所示:

typedef struct matrix
{
  double** data;
  int m;
  int n;
} Matrix;

并且有一个函数:

Matrix getMatrix(void);

Matrix getMatrix()
{
    Matrix mat;

    mat.m = 2;
    mat.n = 2;

    mat.data    = (double**)  malloc (sizeof(double*) * 4);

    mat.data[0] = (double* )  malloc (sizeof(double) * 2);
    mat.data[1] = (double* )  malloc (sizeof(double) * 2);

    mat.data [0][0]=1;
    mat.data [0][1]=2;
    mat.data [1][0]=3;
    mat.data [1][1]=4;

    return mat;
}

如果我正在使用,如何捕获该函数的返回值P/Invoke来自 C# 应用程序


我不确定它是否有效,但从记忆中:将数据声明为 IntPtr 并使用它 :

static double[][] FromNative (IntPtr data, int m,int n)
{
   var matrix=new double[m][];

   for(int i=0;i<m;i++)
   {
       matrix[i]=new double[n];
       Marshal.Copy(Marshal.ReadIntPtr(data),matrix[i],0,n);
       data =(IntPtr)(data.ToInt64()+IntPtr.Size);
   }

   return matrix;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PInvoke 返回带有二维数组的结构 的相关文章

随机推荐

  • 使用 LINQ,如何从列表中查找具有给定属性值的对象?

    我有一堂课叫Questions This Questions有属性QuestionID and QuestionAnswer 迭代此过程时List of Question在 foreach 中 我必须找到 QuestionID 12 如果我
  • Sqlite C++ 中的预准备语句如何工作

    我不知道如何在我的 Sqlite3 代码中实现准备好的语句 include
  • C# pinvoke 封送联合

    我在将 C Union 转换为 C 时遇到一些问题 这是联盟的定义 union Info char varChar 8 short varShort 4 int varInteger 2 float varFloat 2 double va
  • 无法在 Kivy 中查看 tiff 图像

    problem 我可以使用以下命令加载图片Image kivy 中的模块 但由于某种原因 我无法将 tif 文件加载到 kivy 中 当图像源为 pics lugia png 图像加载得很好 但如果来源是 pics snorlax tif
  • java 字段变化监听器

    所以我真的想要某种方法来检测某个对象的场变化 我用谷歌搜索了很长一段时间但没有找到任何东西 所以基本上我需要知道的是对象的某些变量何时发生变化 让我们以这个类为例 public class Example String text test
  • GWT 开发者模式代码服务器

    GWT 开发人员模式嵌入式 http 服务器对我来说很有意义 但我承认我不明白 代码服务器 是什么 让我印象深刻的是 一个 html 文件包含了浏览器在开发过程中使用处理 AJAX 的嵌入式 Jetty 服务器呈现 GWT 应用程序所需的所
  • 在 AngularJS 中使用 ng-repeat 过滤结果 6 到 10(共 100 个)

    我看到limitTo文档中的过滤器 这允许我限制前 5 个或后 5 个结果 但我想设置限制的开始位置 以便我可以显示第二组 5 个结果 有内置过滤器吗 从 Angular 1 4 0 开始 limitTo filter https docs
  • 如何修改子字符串?

    使用排序规则xxx german2 ci它治疗 and ue相同 是否有可能出现所有M nchen突出显示如下 输入示例 M nchen can also be written as Muenchen 输出示例 b M nchen b ca
  • Git - 递归删除文件扩展名

    我试图递归地删除文件扩展名 但无论我尝试什么 它都会失败 谢谢你的任何想法 ubuntu ubuntu laptop hh hh sdk src uboot hh git rm r cached o fatal pathspec src u
  • DirectShow 与 Media Foundation 进行视频捕捉?

    我正在尝试在视频捕获 监控 流媒体应用程序的这两个 API 之间进行选择 但我不确定哪个是最佳选择 一些背景知识 我需要它与各种视频采集卡 适配器一起使用 该应用程序可能会用 C 开发 因此本机 API 至关重要 性能很重要 因为我需要处理
  • 如何检查密码重置令牌是否已过期?

    我正在使用 ASP NET Identity 并且具有基本的忘记密码 重置密码功能 当您填写忘记密码的表单时 它会使用以下命令创建一个重置令牌 userManager GeneratePasswordResetTokenAsync user
  • 为什么 CoreBluetooth 一次又一次地发现相同的外设?

    我已经在 StackOverflow 上查看了类似的问题 但它们都处理由于收到扫描响应数据而对 CBManager 委托的 didDiscover 方法进行第二次调用 我的情况有所不同 我坐在家里的办公桌前 我的应用程序在 iPhone 6
  • 使用 matplotlib 对带有标签的点进行动画处理

    我有一个带有线条的动画 现在我想标记这些点 我试过plt annotate 我尝试过plt text 但标签不动 这是我的示例代码 import numpy as np import matplotlib pyplot as plt imp
  • 如何设置ScrollView内容的大小?

    现在 ScrollView ContentSize 属性是只读的 我该如何设置 ScrollView 内容的大小 在 UIScrollView 中可设置的属性完全相同 但不是 xamarin 形式 我有这个
  • JSON.stringify(response.json()) 和 response.text() 之间的区别

    将响应流转换为 JSON 后 两者是否完全相同 const responseA fetch endpointReturnsJson const textA await responseA text 在平行宇宙里 const response
  • 我们可以在 SVG 模板中渲染 Angular 组件吗?

    看到我们可以将模板文件另存为 svg而不是 html现在我想我可以制作 svg 组件 可以按如下方式使用 main component svg
  • Rails + Compass:与直接使用 haml + blueprint 相比的优势

    我有一些在 Rails 项目上使用 haml sass 的经验 我最近开始将它们与 blueprintcss 一起使用 我所做的唯一一件事是将 blueprint css 转换为 sass 文件 并从那里开始编码 我什至有一个轨道发电机 h
  • 事后实现接口

    我认为 以下内容无法在 Java 中完成 但我很乐意学习如何实现类似的东西 假设我们有一个类 C 它已在编译代码中使用 我们既不能更改该代码 也不能更改 C 的原始定义 进一步假设有一些有趣的代码可以重用 只要 C 实现接口 I 即可 事实
  • 如何获取 Android 设备内部下载文件夹路径? [复制]

    这个问题在这里已经有答案了 是否可以获取Android设备内部下载文件夹路径 如果设备有 SD 卡 您可以使用 Environment getExternalStorageState 如果您没有 SD 卡 您可以使用 Environment
  • PInvoke 返回带有二维数组的结构

    我有定义在的结构c questions tagged c 2b 2bWin32 DLL 如下所示 typedef struct matrix double data int m int n Matrix 并且有一个函数 Matrix get