Dot-Net
MSVS 2012 上的 LNK2022(重複的託管類型具有不同的可見性)
我正在將解決方案從 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(…)**,然後在有問題的文件中查找重複的包含項。