我最近一直在努力学习Directx并开始阅读Frank Luna撰写的“使用DirectX 11进行3D游戏编程简介”。
这本书非常有趣,直到我遇到了我自己无法解决的问题。本书的第一步是编译Frank Luna编写的一个程序,这是一个用DirectX绘制的Box,因为他在书中写的代码使用的是Microsoft DirectX SDK(2010年6月)我也必须安装它,因为显然DirectX现在包含在Windows 8使用的Windows工具包中,并且不再支持D3DX(本书中使用的)。
我遇到的错误是这个:
Error 2 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1800' in Camera.obj
我找到了Luna自己的答案(我认为)here,但我不知道该怎么做。
Luna说: 您需要使用VS12重建Effects11库。此论坛帖子有更多详细信息:
Dreamcore问: 我该如何重建它?该帖只说我必须重建它,但现在如何重建它。
Luna回答: 在2010年6月的SDK中有Effects11项目:
E:\ DXSDKJune10 \样品\ C ++ \ Effects11
打开解决方案并构建调试模式(命名输出Effects11d.lib)并处于发布模式(命名输出Effects11.lib)。然后将这两个.lib复制到本书的公共目录。
有人能告诉我如何构建调试和发布模式并使用visual studio 2013专业版获取输出? Effects11_2010.sln甚至在调试或发布中都不编译。它说无法启动程序。
由于
答案 0 :(得分:2)
你找到了答案,你只是错过了一步。忽略消息说VS无法启动程序。您正在构建二进制库,而不是可执行文件。这就是为什么它无法启动程序,因为你没有构建它。
新编译的Effects11.lib文件将位于DEBUG文件夹中。只需将其重命名为在文件名末尾添加“d”并将其保存到LUNA示例文件中的COMMON文件夹中。您应该首先在COMMON文件夹中重命名原始文件,以便可以恢复它,除非您拥有书籍磁盘中的原始ZIP。然后重新编译,框示例将起作用。假设您已经使用VS2013向导将解决方案的平台工具集从v100(VS2010)转换为v120(VS2012 / VS2013)。
另外,不要忘记在Luna的D3DUtil.h文件中注释掉HR宏的全部内容。我不知道它是否有效,但自从VS2010中的DirectX9c以来它没有用,现在仍然无法在VS2013中使用DirectX11。只需找到HR定义并将其替换为:
echo ^<BR^>