C# 托管c+中的公共结构+;无法从c中看到dll#

C# 托管c+中的公共结构+;无法从c中看到dll#,c#,c++-cli,C#,C++ Cli,我有一份申请书。它引用了一个c++-cli dll。在C++ DLL的命名空间中声明一个公共结构: namespace Wrapper { public struct maxs { public: char Name[255]; int num; }; etc 在C++ DLL中有一个函数返回指向结构指针的指针。 Wrapper::Maxs** Wrapper::Class1::CallMax(); C++应用程序引用C++ DLL并声明结构

我有一份申请书。它引用了一个c++-cli dll。在C++ DLL的命名空间中声明一个公共结构:

namespace Wrapper {

  public struct maxs
  {
     public:
      char Name[255];
      int num;
  };
etc

在C++ DLL中有一个函数返回指向结构指针的指针。

Wrapper::Maxs** Wrapper::Class1::CallMax();

C++应用程序引用C++ DLL并声明结构(不安全代码)

的实例 然后我尝试访问max的字段,如下所示:

for(int i = 0; i < num; ++i)
 {
    name = maxs[i]->name;
  }
这正常吗? 所以问题是:为什么c#不能看到公共结构Maxs的字段?为什么元数据信息显示为空结构?
谢谢。

这是正确的答案:


因为它不是托管结构。您需要将其声明为公共值结构Hans Passant 3月24日2:33,因为它不是托管结构。您需要将其声明为
public value struct
。谢谢!这就完成了工作,我学到了一些新东西。@HansPassant:你介意回答这个问题吗,这样作者就可以接受了。。?我知道这很琐碎,但如果不是这样,这条线就会挂起来。它不符合被关闭的条件。。
for(int i = 0; i < num; ++i)
 {
    name = maxs[i]->name;
  }
using System;
using System.Runtime.CompilerServices;

namespaceWrapper
{
    [CLSCompliant(false)]
    [NativeCppClass]
    [UnsafeValueType]
    public struct Maxs
    {
    }
}