簡體   English   中英

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

[英]Create a mixed mode C++/CLI DLL


我希望不要重復已經問過的問題。我四處搜尋,但沒有找到類似的東西。
我已經開發了本機sdk,其中公開了一些類和接口。
現在,我需要實現一個使用此SDK的混合模式DLL。
但是以下代碼無法編譯:

包裝類

#pragma once

#include <vcclr.h>

#using <mscorlib.dll>

class WrapperClass{
public:
  WrapperClass();

private:
  gcroot<Client^> m_ManagedObj;
};

本機類

#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指令,但是我不知道怎么做。
有人可以給我一些建議嗎?

您中的許多人都需要添加另一層間接WrapperClass ,因此您的非托管源文件看不到WrapperClass類的“內容”。

//WrapperClassWrapper.h
class WrapperClass;

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

然后在用/ clr編譯的WrapperClassWrapper.cpp中實現它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM