1

我最近安装了 Visual Studio 2012 并尝试重新编译一个现有项目,该项目是一个混合模式 C++ 应用程序,带有一点 C++/cli 用于访问应用程序所需的 .net 程序集。

C++/CLI 实现的一部分使用 ReaderWriterLockSlim 类来保护从多个线程访问字典。

这一切都可以编译并与 VS2010 一起正常工作。然而,在升级到 VS0212 和 .Net 4.5 后,该项目现在无法编译,因为它在 System::Threading 命名空间中找不到 ReaderWriterLockSlim。

我相当确定安装很好,因为我可以创建一个新的 C# 项目并使用 ReaderWriterLockSlim 没有任何问题。

下面显示的新 C++ 项目也失败了。我在此处或 google 上都找不到对 C++/CLI 用户故意删除的此类的任何引用。有没有其他人有过类似的经历。

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

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

    return 0;
}
4

1 回答 1

4

当您遇到此类问题时,请务必注意该课程的MSDN Library 文章。在文章的顶部,它向您展示了使用该类所需的参考程序集:

程序集:System.Core(在 System.Core.dll 中)

C++/CLI 项目模板中默认不包含它。使用 Project + Properties、Common Properties、Framework 和 References 修复该问题。查看“参考”列表。单击 Add New Reference 按钮并从 Assemblies + Framework 列表中勾选 System.Core。

于 2013-02-07T14:10:03.213 回答