C# 托管c+中的公共结构+;无法从c中看到dll#
我有一份申请书。它引用了一个c++-cli dll。在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并声明结构
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
{
}
}