-1


すでに尋ねられたことを繰り返さないことを願っています..私は周りを検索しましたが、似たようなものは見つかりませんでした.
いくつかのクラスとインターフェイスを公開するネイティブ 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 managed/unmanaged ディレクティブを使用する必要があると思いますが、その方法がわかりません。
誰かが私にいくつかの提案をしてもらえますか?

4

1 に答える 1

1

WrapperClassアンマネージ ソース ファイルがクラスの「コンテンツ」を認識しないように、別の間接レイヤーを追加する必要があります。

//WrapperClassWrapper.h
class WrapperClass;

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

そして、それを /clr でコンパイルする WrapperClassWrapper.cpp に実装します。

于 2013-05-30T10:06:05.340 に答える