创建混合模式C ++ / CLI DLL

时间:2013-05-29 14:08:13

标签: c++-cli mixed-mode


我希望不要重复已经问过的事情。我四处寻找,但我没有找到类似的东西 我开发了一个本地sdk,它暴露了一些类和接口 现在,我需要实现一个使用此SDK的混合模式DLL 但是下面的代码没有编译:

WrapperClass.h

#pragma once

#include <vcclr.h>

#using <mscorlib.dll>

class WrapperClass{
public:
  WrapperClass();

private:
  gcroot<Client^> m_ManagedObj;
};

NativeClass.h

#pragma once

#include "stdafx.h"
#include "NativeSDK.h"

#include "WrapperClass.h"

class Native : public INativeSDK {
public:
  // ... code ...

private:
  WrapperClass ManagedObj;
}

设置为:

Project Setting   : No Support for CLR
NativeClass.cpp   : No Support for CLR
WrapperClass.cpp  : /clr

编译错误是:

..\include\vcclr.h(16): fatal error C1190: The managed code require an option '/clr'

因为NativeClass没有用/ clr编译。
我想我需要使用#pragma mananaged / unmanaged指令,但我无法弄清楚如何 有人可以给我一些建议吗?

1 个答案:

答案 0 :(得分:1)

您需要添加另一层间接,因此您的非托管源文件不会看到WrapperClass类的“内容”。

//WrapperClassWrapper.h
class WrapperClass;

class WrapperClassWrapper
{
public:
    WrapperClassWrapper();
    ~WrapperClassWrapper();
    //etc.
private:
    WrapperClass *m_pWrapper;
}

然后在使用/ clr编译的WrapperClassWrapper.cpp中实现它。