如何在两个依赖类中使用 msclr\marshal_cppstd



我需要在我的代码中使用msclr,但我还需要使用另一个也使用msclr的类"ClassOne"。我收到"类"类型重定义错误和基类未定义错误。我不知道为什么会这样。

这两个类位于同一项目中。当我 #using"ClassOne.obj"时出现错误

我怎样才能避免这种情况?

第一类:

#ifndef _CLASSONE_H
#define _CLASSONE_H
ref class ClassOne
{
public:
ClassOne();
};
#endif

第一类.cpp:

#include "ClassOne.h"
#include <msclr/marshal_cppstd.h> // For msclr::interop::marshal_as
ClassOne::ClassOne()
{
}

类二.h:

#ifndef _CLASSTWO_H
#define _CLASSTWO_H
#using "ClassOne.obj"
public ref class ClassTwo
{
public:
ClassOne a;
ClassTwo();
};
#endif

第二类.cpp:

#include "ClassTwo.h"
#include <msclr/marshal_cppstd.h>
ClassTwo::ClassTwo()
{
msclr::interop::marshal_as<std::wstring>(L"text");
}

错误:

看截图:截图

#using "ClassOne.obj"

我不知道这是什么。我以前从未在 obj 文件上看到过 using 指令;我不确定目的是什么。坦率地说,我很惊讶你没有在#using行上收到错误。

如果要引用ClassOneClassTwo,请像常规C++一样包含头文件

#using "ClassOne.h"

最新更新