所以我最近获得了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'的左边必须有class / struct / union”。考虑到这一切都完全编译好在转换到Visual Studio 2012之前,我不确定是什么问题! :(
此外,当我尝试运行上一次成功构建(使用Visual Studio 2010构建)时,我在启动时遇到运行时错误,说“程序无法启动因为您的计算机缺少MSVCR100D.dll”。我知道这可能与手头的问题无关,但是有谁知道为什么会发生这种情况呢?
感谢您的帮助, 亚历
答案 0 :(得分:3)
“错误C2228:'.ToString'的左边必须有class / struct / union”: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”。)