Dot-Net

MSVS 2012 上的 LNK2022(重複的託管類型具有不同的可見性)

  • December 10, 2014

我正在將解決方案從 MSVS2005 移植到 MSVS2012。這些項目在 C++ .NET 中,但也使用自製的本地 C++ 庫。我們使用 2005 建構項目沒有問題,但現在,我無法使用 2012 建構項目。我收到以下錯誤消息:

MyFile.obj:錯誤 LNK2022:元數據操作失敗 (801311E4):重複的託管類型具有不同的可見性。

這是什麼意思?你需要什麼資訊來幫助我?

謝謝你的幫助?

我發現了這個錯誤。它混合了這裡建議的所有內容。

在項目的某個地方,包含了一個本地 C++ 標頭檔。此文件中的一個類通過以下方式公開:

#include "File_Where_ClassName_Is_Defined.h"
#pragma make_public( ClassName )

但是在我自己的程式碼中,我包含了第二個標頭,該標頭本身包含定義了公開類的標頭。因此,此時,該類在同一項目的一個文件中“公開”,而在另一個文件中“公開”。“具有不同可見性的重複”來自那裡。

讓我走上錯誤道路的唯一一點是錯誤消息:“重複的託管類型具有不同的可見性”。但在這裡,它是一種非託管類型。

因此,如果有一天您遇到此錯誤,請在項目中查找**#pragma make_public(…)**,然後在有問題的文件中查找重複的包含項。

引用自:https://stackoverflow.com/questions/12645105