将结构(或类)从 C++ dll 传递到 C# (Unity 3D)

2024-03-16

我正在编写一个包装器以从传感器获取一些数据。虽然我在传递 int、float 和它们的数组方面没有问题,但我很难掌握如何传递结构。

代码总结

C++ side

结构如下:

struct HandInfo
{
    int id;
    float x, y, z;
};

在某一时刻,一个静态的、全局可见的 HandInfo leftHand 填充了可通过以下包装函数检索的值:

extern EXPORT_API HandInfo MyWrapper_getLeftHand()
{
    return handtracker.getLeftHand();
}

where 手部追踪器只是包装类的一个实例。

C# side

一旦声明了 extern 函数

[DllImport("MyWrapper")]
private static extern HandInfo MyWrapper_getLeftHand();

在 C# 方面,理想情况下,我将具有相同的结构类型

public struct HandInfo
{
    public int id;
    public float x, y, z;
}

并分配一个变量

HandInfo hi = MyWrapper_getLeftHand(); // NAIVELY WRONG CODE

可以理解的是,这是行不通的。

有什么方法可以达到这个目的呢?

我将不胜感激任何帮助。 感谢大家抽出宝贵的时间。


它应该可以正常工作(至少,在我拥有的一个小型 C++ + C# 项目中,我能够使其与该项目一起工作)struct,x86 和 x64 中)

[DllImport("MyWrapper.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern HandInfo MyWrapper_getLeftHand();

唯一的事情是,你必须声明CallingConvention = CallingConvention.Cdecl.

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

将结构(或类)从 C++ dll 传递到 C# (Unity 3D) 的相关文章

  • 静态只读字符串数组

    我在我的 Web 应用程序中使用静态只读字符串数组 基本上数组有错误代码 我将所有类似的错误代码保存在一个数组中并检查该数组 而不是检查不同常量字符串中的每个错误代码 like public static readonly string m
  • 计算 XML 中特定 XML 节点的数量

    请参阅此 XML
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • JNI 将 Char* 2D 数组传递给 JAVA 代码

    我想从 C 代码通过 JNI 层传递以下指针数组 char result MAXTEST MAXRESPONSE 12 12 8 3 29 70 5 2 42 42 在java代码中我写了以下声明 public static native
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 为什么从字典中获取时会得到 Action<> 的克隆?

    我有以下字典 private Dictionary
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • 如何在 C 中安全地声明 16 位字符串文字?

    我知道已经有一个标准方法 前缀为L wchar t test literal L Test 问题是wchar t不保证是16位 但是对于我的项目 我需要16位wchar t 我还想避免通过的要求 fshort wchar 那么 C 不是 C
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • 堆栈是向上增长还是向下增长?

    我在 C 中有这段代码 int q 10 int s 5 int a 3 printf Address of a d n int a printf Address of a 1 d n int a 1 printf Address of a
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include

随机推荐

  • 如何正确启用/禁用Flutter的Button

    经研究 当 onPressed 为 null 时 Flutter 的 Button 会自动禁用 然而 由于我必要的测试功能 我被迫放置一个箭头函数 gt 它似乎不会触发 onPressed 实际上为 null 而是返回 null 作为值 因
  • ANR(强制关闭/等待),同时生成足够大的列表

    我正在创建一种文件资源管理器 其中如果将任何应用程序文件复制到手机 SD 卡 我将在带有对话框主题的活动中向用户显示它 对于复制的每个新 app apk 我都会将应用程序的名称和位置附加到对话框中 并且列表是可滚动的 我的问题是 如果我一次
  • 使用 Fast API 接收图像,使用 cv2 处理然后返回

    我正在尝试构建一个 API 它接收图像并对其进行一些基本处理 然后使用 Open CV 和 Fast API 返回它的更新副本 到目前为止 我的接收器工作得很好 但是当我尝试对处理后的图像进行 Base64 编码并将其发送回时 我的移动前端
  • 类型错误:无法深度复制此模式对象

    试图理解我的 变量 类中的这个错误 我希望在我的 Variable 类中存储 sre SRE Pattern 我刚刚开始复制 Variable 类 并注意到它导致我的所有 Variable 类实例发生更改 我现在明白我需要深度复制此类 但现
  • CAPL 编程使用 Timer 作为延迟

    我一直在编写一个 CAPL 脚本 它会在一定的延迟后在每个通道 2 个 上发送消息 我想使用生成以下延迟设置定时器 and mtimer 正在运行功能 我可以使用 setTimer 函数 但我不知道如何使用mtimer 正在运行 代码如下所
  • PhoneGap / Android 自定义键盘

    我正在开发一个具有多个input type numer 元素 目前仅限安卓 内置数字键盘有两个问题 it s inconsistent different on different versions of Android it has un
  • 如何向 ASP.NET 中的元素添加多个类?

    我正在尝试以编程方式将第二个类添加到 td C 中的元素 我想要添加类的元素已经分配了一个类 如果我做类似的事情 myObject CssClass MyClass 它只是覆盖原来的类 我想我可以做类似的事情 myObject CssCla
  • 关于*管理*测试驱动和/或敏捷开发的最佳具体“操作手册”? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一本易于理解的书来呈现给我的老板 团队 背景资料 我们越来越多的工作会议让我的老板 团队思考
  • R Shiny - 条件面板中的条件面板

    我想知道是否可以在另一个条件面板中包含一个条件面板 例如 如果我有一个包含两个选项的下拉列表 1 和 2 选择 1 将显示一组选项 选择 2 将显示另一组选项 但是是否可以在这些条件面板中嵌套一个条件面板 以便我可以在选项 1 的输入中拥有
  • Javascript - 在单词中拖动字母(重新排列)

    我目前正在开发一款名为 词洗牌 http wordshuffle bplaced net 目前单词是德语 用于测试目的 如果你想玩的话 我的进步进展顺利 但我决定改变你玩游戏的方式 目前 您必须通过在文本字段中输入您的猜测来猜测该单词 所以
  • 错误:无法连接到系统 d-bus:未安装 d-bus

    我现在使用 Virtual Box 启动 VM 版本是 5 1 26 r117224 Qt5 6 2 但是当我尝试启动 VM 时 我看到以下错误消息 00 00 29 246866 VMMDev Guest Log 00 00 00 000
  • 实体框架和分片数据库

    我有一个 WCF 数据服务在实体框架代码优先 4 1 提供程序之上运行 该数据库相当大 一个关键表有 77 百万条记录 并且每月增长约 10 并且出现了相当大的性能问题 虽然对这么大的数据库进行分片是一件痛苦的事情 但这似乎是不可避免的 我
  • 用于多行注释的 Unix Flex 正则表达式

    我正在 Unix 上使用 Flex 制作词法分析器 如果您之前使用过它 您就会知道您主要只是为您为其编写词法分析器的任何语言的标记定义正则表达式 我被困在最后一部分 我需要正确的正则表达式来进行多行注释 以允许类似的事情 This is a
  • MATLAB:两个矩阵在一个索引上的逐元素乘法?

    我试图弄清楚是否有一种本地方法可以在 Matlab 中获得两个矩阵的某种元素乘积 我正在寻找的产品需要两个矩阵 A and B说 并返回那里的产品C 其元素由下式给出 C i j k A i j B j k 自然地 列数A假设与行数相同B
  • 为什么 ui.alert 可以工作,但 ui.prompt 不能与 onOpen() 一起使用?

    当我使用 onOpen 时 我可以创建一个弹出窗口 ui alert 但 ui prompt 不起作用 例如 function onOpen var ui SpreadsheetApp getUi get ui for alert ui a
  • 我是否有 gcc 优化错误或 C 代码问题?

    测试以下代码 include
  • 我可以通过编程方式创建 Google 帐户吗?

    有谁知道是否通过java中的google api 我可以以编程方式创建谷歌帐户 Yes ish 管理 SDK https developers google com admin sdk Directory API 允许您创建可与 Googl
  • 在nodejs中写入文件之前对数据流进行排序

    我有一个输入文件 可能包含最多 1M 条记录 每条记录如下所示 field 1 field 2 field3 n 我想读取这个输入文件并根据field3在将其写入另一个文件之前 这是我到目前为止所拥有的 var fs require fs
  • 如何将业务逻辑和电子邮件发送功能分开?

    我的 Java Web 应用程序有一个要求 需要在某些条件下发送电子邮件警报 为此 我使用了 javax mail api 并且发送电子邮件效果很好 但问题是程序执行要等到发送电子邮件的方法执行完毕为止 由于在各个点要发送数百封电子邮件 这
  • 将结构(或类)从 C++ dll 传递到 C# (Unity 3D)

    我正在编写一个包装器以从传感器获取一些数据 虽然我在传递 int float 和它们的数组方面没有问题 但我很难掌握如何传递结构 代码总结 C side 结构如下 struct HandInfo int id float x y z 在某一