4

我的操作系统是 64 位 Windows 7。
我想在 C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D10\Tutorials\Tutorial02 中构建 DirectX 示例。但是当我构建错误时发生致命错误

LNK1104:“winmm.lib”无法打开文件。

我重新安装了 Direct SDK,但没有任何变化。我还将路径(包括,lib)添加到设置中。

如果我从项目设置中删除“winmm.lib”,则无法打开“comctl32.lib”。两个库都已经存在于属性>链接器>输入中。

我怎么解决这个问题?

4

3 回答 3

2

winmm.lib不是 DirectX SDK 的一部分,而是Windows SDK的一部分。

最新的 Windows SDK 版本也进行了大量重组,但它包含您正在寻找的库。

于 2014-11-05T16:39:42.310 回答
2

只需将下面的行放在 stdafx.h

#pragma comment(lib, "winmm.lib")
于 2016-07-22T10:51:49.010 回答
1

如果您尝试使用 VS 2012 或 VS 2013 构建任何旧版 DirectX SDK 示例,则需要根据MSDN页面底部的说明修改包含/库路径。最重要的变化是您必须反转 Include/Lib 路径顺序:

对于 VS 2010,它是:

$(DXSDK_DIR)Include;$(IncludePath)

$(DXSDK_DIR)Lib\x86;$(LibraryPath)或者$(DXSDK_DIR)Lib\x64;$(LibraryPath)

对于 VS 2012/2013,它必须是:

$(IncludePath);$(DXSDK_DIR)Include

$(LibraryPath);$(DXSDK_DIR)Lib\x86或者$(LibraryPath);$(DXSDK_DIR)Lib\x64

当然,更好的选择是根本不花时间学习旧的 Direct3D 10 API,而是使用MSDN Code Gallery上最新的Direct3D 11 Win32 桌面教程。事实上,我已经在那里发布了许多旧版 DirectX SDK 示例,因此它们可以在没有 DirectX SDK 的情况下与 VS 2012/2013 Express for Windows Desktop 和 VS 2012/2013 Pro+ 一起正常工作。

阅读这些博客文章:

DirectX SDK 示例目录

DirectX SDK 工具目录

没有 D3DX 的生活

特定时代的 DirectX SDK

并查看这些 CodePlex 项目:

DirectX 工具包

DirectXMesh

DirectXTex

用于 Direct3D 11 的 DXUT

效果 11

于 2014-11-05T16:52:40.640 回答