在 VS 2010 中链接 WASAPI
Posted
技术标签:
【中文标题】在 VS 2010 中链接 WASAPI【英文标题】:Linking WASAPI in VS 2010 【发布时间】:2012-10-11 16:38:56 【问题描述】:我正在使用 Visual Studio 2010 并包含以下标题:
#include <Audioclient.h>
#include <mmdeviceapi.h>
除其他外,引用这些函数:
CoCreateInstance
IMMDeviceEnumerator::GetDefaultAudioEndpoint
IMMDevice::Activate
我已链接 winmm.lib,但出现如下错误:
Error 8 error LNK2001: unresolved external symbol _IID_IMMDeviceEnumerator C:\XXXX\XXXX\XXXX.obj XXXX
我需要链接什么 .lib 文件来获取这些功能?是否有关于如何在 VS 2010 中查找与 .h 文件关联的 .lib 的任何指导?
我正在查看来自 MSDN 的一些 example code,但我找不到需要链接的库。
【问题讨论】:
来自here,__uuidof()
应该可以工作。
【参考方案1】:
来自克里斯。我从这里更改了代码:
hr = CoCreateInstance(
CLSID_MMDeviceEnumerator, NULL,
CLSCTX_ALL, IID_IMMDeviceEnumerator,
(void**)&pEnumerator);
到这里:
hr = CoCreateInstance(
__uuidof(MMDeviceEnumerator), NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IMMDeviceEnumerator),
(void**)&pEnumerator);
现在它链接了!
【讨论】:
CLSCTX_ALL 实际上应该没问题。以上是关于在 VS 2010 中链接 WASAPI的主要内容,如果未能解决你的问题,请参考以下文章
如何修复从 VS2010 升级到 VS2013 的项目中的链接器错误,其中链接器正在寻找不存在的 MFC 库文件?
由于其他依赖库,在 VS2010 中链接 googleTest 会导致 LNK2005