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

时间:2017-03-17 16:02:50

标签: visual-studio-2015 c++-cli

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

两个类都在同一个项目中。当我做#using“ClassOne.obj”

时出现错误

我该如何避免这种情况?

ClassOne.h:

#ifndef _CLASSONE_H
#define _CLASSONE_H

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

ClassOne.cpp:

#include "ClassOne.h"
#include <msclr/marshal_cppstd.h> // For msclr::interop::marshal_as

ClassOne::ClassOne()
{
}

ClassTwo.h:

#ifndef _CLASSTWO_H
#define _CLASSTWO_H
#using "ClassOne.obj"

public ref class ClassTwo
{
public:
    ClassOne a;
    ClassTwo();
};
#endif

ClassTwo.cpp:

#include "ClassTwo.h"
#include <msclr/marshal_cppstd.h>

ClassTwo::ClassTwo()
{
    msclr::interop::marshal_as<std::wstring>(L"text");
}

错误:

查看屏幕截图:Screenshot

1 个答案:

答案 0 :(得分:0)

#using "ClassOne.obj"

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

如果您想引用ClassOne中的ClassTwo,请包含头文件,就像常规C ++一样。

#using "ClassOne.h"