编译DXSDK9.0c例子(Water那个例子)出现下面的错误:
d:\dxsdk\samples\c++\common\src\d3dapp.cpp(1582) : error C2051: case 表达式不是常量
生成日志保存在“file://d:\DXSDK\Samples\C++\Direct3D\Water\Debug\BuildLog.htm”
Water - 1 个错误,12 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
查看程序代码:
case HRESULT_FROM_WIN32( ERROR_FILE_NOT_FOUND ): _tcscpy( strMsg, _T("Could not load required media." ) ); break;
将这些代码注释掉即可.
正在链接...
CVTRES : fatal error CVT1100: duplicate resource. type:MANIFEST, name:1, language:0x0409
LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
生成日志保存在“file://d:\DXSDK\Samples\C++\Direct3D\Water\Debug\BuildLog.htm”
Water - 2 个错误,21 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
出现这两个问题的原因都是一个,即文件中的现有资源文件和新资源字符串表 ID 冲突。微软也给出了解决这个问题的方法,但是,在现有的情况下,这个方法是靠不住的,因为,不可能不使用wx.rc资源。所以,一个变通的解决方法就是:
工程属性->配置属性-> 清单工具->输入和输出->嵌入清单,双击,选择[否],即可解决: