所以我最近获得了 Visual Studio 2012。我将 Visual Studio 2010 解决方案转换为 Visual Studio 2012 项目。在我转换它之前它可以工作。
我有这行代码:
this->Text = global::ProjectName + " (" + global::Type.ToString() + ") - Path Creator 2.0";
其中 global::Type 是:
ref class global {
public:
static Rct3PathType Type;
...
};
...Rct3PathType 是:
enum class Rct3PathType {
Basic = 0x02060206,
Extended = 0x05060506,
Queue = 0x01070107
};
我在编译时调用 global::Type.ToString() 时收到错误,提示“错误 C2228:'.ToString' 的左侧必须具有类/结构/联合”。考虑到在切换到 Visual Studio 2012 之前这一切都编译得很好,我不确定问题是什么! :(
此外,当我尝试运行最后一次成功的构建(使用 Visual Studio 2010 构建)时,我在启动时收到运行时错误,提示“程序无法启动,因为您的计算机中缺少 MSVCR100D.dll”。我知道这可能与当前的问题无关,但有人知道为什么会发生这种情况吗?
感谢您的帮助, 亚历克斯
最佳答案
“错误 C2228:'.ToString' 的左侧必须具有类/结构/联合”:enum class
也是 C++11 枚举的语法。要使其成为 C++/CLI 枚举,请为其提供可访问性说明符,这在 C++11 枚举上是不允许的。换句话说,private enum class
或 public enum class
会将其从 C++11 枚举更改为 C++/CLI 枚举。这在 VS2010 中不是问题,因为它不支持 C++11 枚举。
“程序无法启动,因为您的计算机缺少 MSVCR100D.dll。”:VS2012 使用与 VS2010 不同的 C 运行时。 MSVCR100D 是 Microsoft Visual C 运行时版本 10.0,调试版本。这个DLL是随VS2010一起安装的,没有其他方法可以得到它。如果您有旧的发布版本,则可以从 Microsoft 获取可再发行的运行时( x86 或 x64 ),并安装它以使其运行。 (这将是 MSVCR100.dll,末尾没有“D”。)
关于visual-studio-2012 - "error C2228: left of ' .ToString ' must have class/struct/union",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292981/