在 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

如何用VS2010编写动态链接库DLL

如何用VS2010编写动态链接库DLL

怎么在C#中添加用C语言开发的动态链接库dll文件(vs2010)?

怎么在C#中添加用C语言开发的动态链接库dll文件(vs2010)