c# - 将 C 结构转换为 C#?
问题描述
我有一个用 C++ 编写的 API,并试图将它与 C# Windows 表单中的互操作一起使用。我很难定义等效的 C# 结构。这是 C++ 结构:
typedef struct
{
char SerNo[LENGTH];
HANDLE dev;
} myDevice;
编辑:
感谢评论,第一项已解决。这是当前的 C# 状态:
public unsafe struct sdrplay_api_DeviceT
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 64)]
string SerNo;
public IntPtr dev;
}
然而,我没有尝试得到 HANDLE。所以我想这个时候,我会进一步扩展代码:
在原始C++代码中,有一个函数如下:
GetDevices(myDevice *devs);
在 C# 代码中我已经这样做了:
public unsafe static extern GetDevices([In, Out] myDevice[] devs);
现在我使用的代码如下:
myDevice[] devs = new myDevice[6];
var error = GetDevices(devs);
如果我在 Visual Studio 中查看开发人员,我会正确看到 SerNo (devs[0].SerNo),但“句柄始终为 0;
我尝试了 IntPtr, byte,但我不知所措。谢谢,汤姆
解决方案
推荐阅读
- ios - 我们是否应该避免手动清除 iOS tmp 和 Caches 文件夹?
- react-native - Expo: Invariant Violation: ListView 已被删除 - 但我不使用 ListView
- javascript - 为什么当我在 React 中使用 props.element 时它变得未定义?
- vb.net - 将值分配给另一个 CSV 文件
- html - 如何防止引导表增长我的容器
- c# - 在 WPF 应用程序中添加 XAML 矢量图形
- python - 欧拉计划第 87 题,主要三元组
- java - 如何使 EditText 不允许输入任何数字?
- javascript - 我想单击父组件以在反应中呈现子组件
- apache-flink - 如何在 apache flink 中实现对账系统