2013-02-07 71 views
1

我最近安裝了Visual Studio 2012,並嘗試重新編譯一個現有項目,它是一個混合模式C++應用程序,帶有一些C++/cli用於訪問.net程序集所需的應用程序。ReaderWriterLockSlim從System ::線程化命名空間中用C++/CLI丟失

C++/CLI實現的一部分使用ReaderWriterLockSlim類來保護對來自多個線程的字典的訪問。

這一切都編譯和VS2010工作正常。但是,升級到VS0212和.Net 4.5後,該項目現在無法編譯,因爲它無法在System :: Threading命名空間中找到ReaderWriterLockSlim。

我相當肯定安裝是好的,因爲我可以創建一個新的C#項目並使用ReaderWriterLockSlim沒有任何問題。

下面顯示的新C++項目也失敗。我無法在這裏或谷歌上找到任何有關這類C++/CLI用戶故意刪除的引用。其他人有過類似的經歷嗎?

#include "stdafx.h" 
using namespace System::Threading; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    ReaderWriterLockSlim^ rwlock = gcnew ReaderWriterLockSlim(); 

    return 0; 
} 
+0

你說你在一個C++項目中得到了這個錯誤,你轉換爲C++/CLI。如果您從頭開始創建C++/CLI項目會發生什麼? –

回答

3

當你有這樣的問題時,一定要注意類的MSDN Library article。就在它顯示哪些參考組件需要使用類文章的頂部:

大會:System.Core程序(在System.Core.dll)

這是不包括在內在C++/CLI項目模板中是默認的。通過Project + Properties,Common Properties,Framework和References修復此問題。查看「參考」列表。單擊添加新引用按鈕並從Assemblies + Framework列表中勾選System.Core。

+0

謝謝,解決了這個問題。從來沒有想過檢查,因爲ReaderWriterLock可用,但ReaderWriterLockSlim不是。事實證明,ReaderWriterLock在mscorelib.dll中。 – user1200305

相關問題