繁体   English   中英

在struct C#中创建和分配一个指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM