[英]Create and allocate a pointer inside struct C#
我面临以下问题。
我有一个通过 DLL 传递给 C# 的 C++ API。 这是 api 的样子:
header.h
extern "C" __declspec( dllexport) bool f(CustomClass* myclass);
在哪里:
struct CustomClass
{
double* grades;
int* ages;
char name[16];
}
所以我打算从 C# 调用这个 f 并面临分配指针的困难:
更准确地说,我可以分配 CustomClass* 但不能分配基础类型:
struct CustomClass
{
public unsafe char* name;
public unsafe double* grades;
public unsafe int* ages;
};
fixed(CustomClass* instances = new CustomClass[5]) // this is fine
{
instances[0].grades = new double[10];// no good, , cannot implicitly convert from double[] to double*
fixed(instances[0].grades = new double[10]) // no good, instances is a variable but used as a type
{
}
}
谁能帮助理解如何在类中分配指针?
或者可能有任何其他解决方法来满足 C++ DLL api?
您需要使用固定大小的数组定义结构。 填写每个所需的尺寸
struct CustomClass
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
double[] grades = new double[10];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
int[] ages = new int[10];
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
char[] name = new char[16];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.