在哪里可以找到“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

在 C++ 中播放音乐文件

win32——音乐媒体处理

在哪里可以找到 uctypes micropython 模块

Windows 8 SDK 库位置

WIA 2.0,我在哪里可以找到属性的有效值? C#