在哪里可以找到“winmm.lib”(我使用的是 Visual Studio 2012)
Posted
技术标签:
【中文标题】在哪里可以找到“winmm.lib”(我使用的是 Visual Studio 2012)【英文标题】:Where can I find 'winmm.lib' (I'm using Visual Studio 2012) 【发布时间】:2014-11-05 16:20:20 【问题描述】:我的操作系统是 64 位 Windows 7。 我想在 C:\Program Files (x86)\Microsoft DirectX SDK(2010 年 6 月)\Samples\C++\Direct3D10\Tutorials\Tutorial02。 但是当我构建错误时发生致命错误
LNK1104:“winmm.lib”无法打开文件。
我重新安装了 Direct SDK,但没有任何变化。我还在设置中添加了路径(包括、lib)。
如果我从项目设置中删除“winmm.lib”,则无法打开“comctl32.lib”。 两个库都已经存在于属性>链接器>输入中。
我该如何解决这个问题?
【问题讨论】:
你在哪里添加路径?您是否检查过您的硬盘上是否存在 winmm.lib? 它应该在C:/winows/system32
中将此路径添加到您的库路径中
那些(两者)都是 Windows SDK 库:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib 或周围。
它肯定不会在C:/winows/system32
我在这个文件夹中根本没有一个.lib 文件。也许您正在考虑 .dll。
LNK1104: 'winmm.lib' can't open the file.
你在混合 x86_64 和 x86 吗?请记住,您不能在 32 位应用程序中使用 64 位库或在 64 位应用程序中使用 32 位库。
【参考方案1】:
winmm.lib
不是 DirectX SDK 的一部分,而是Windows SDK 的一部分。
最新的 Windows SDK 版本也进行了重大重组,但它包含您正在寻找的库。
【讨论】:
【参考方案2】:只需将下面的行放在 stdafx.h 中
#pragma comment(lib, "winmm.lib")
【讨论】:
在启动使用 winmm.dll 函数的项目时,我收到“LNK2028 未解析的令牌 (0A00002D) extern C ...”消息。添加“#pragma comment ...”以添加对 winmm.lib 的引用,如上所述解决了问题。【参考方案3】:如果您尝试使用 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 Samples Catalog
DirectX SDK Tools Catalog
Living without D3DX
DirectX SDKs of a certain age
并查看这些 CodePlex 项目:
DirectX Tool Kit
DirectXMesh
DirectXTex
DXUT for Direct3D 11
Effects 11
【讨论】:
以上是关于在哪里可以找到“winmm.lib”(我使用的是 Visual Studio 2012)的主要内容,如果未能解决你的问题,请参考以下文章
C++ 中的 Playsound() 播放 windows 错误声音,我已经包含了 winmm.lib