gpt4 book ai didi

c++ - 在 ISimpleAudioVolume 的 IAudioSessionControl 上使用 QueryInterface 无法编译

转载 作者:行者123 更新时间:2023-12-02 10:24:41 26 4
gpt4 key购买 nike

几个小时以来,我一直在为这个问题而发疯。从本质上讲,我已经开始开发一项服务,该服务允许用户通过通过 TCP 向服务器应用程序发送数据包来控制单个应用程序的音量。这是一个业余爱好者项目,可以进一步加深我对 C++ 的了解。

我正在使用 ISessionEnumerator 接口(interface)来构建指向 session 的指针列表。我原以为可以直接从 session 中控制音量。我很快发现我需要另一个接口(interface),就像 ISimpleAudioVolume 接口(interface)一样糟糕。到目前为止,我有以下代码用于检索接口(interface):

int AudioManager::AdjustVolumeBy(IAudioSessionControl * pSession, int adjustBy) {
void * pVolumeControl;
pSession->QueryInterface(IID_ISimpleAudioVolume, &pVolumeControl);
return 0;
}

这产生了编译错误:
LNK2001 unresolved external symbol _IID_ISimpleAudioVolume

我在头文件中包含以下头文件:
#pragma once
#include <Audioclient.h>
#include <audiopolicy.h>
#include <mmdeviceapi.h>
#include <AudioSessionTypes.h>
#include <endpointvolume.h>
#include <vector>

此外,在创建项目时,我创建了它,包括 ATL 和 MFC。非常感谢任何输入。

最佳答案

我最终设法通过将“winmm.lib”添加到链接器输入中的“附加依赖项”来解决这个问题。

另外,为了方便其他可能遇到此问题的人引用,将原来的音量调节代码更改为:

int AudioManager::AdjustVolumeBy(IAudioSessionControl * pSession, float adjustBy) {
ISimpleAudioVolume * pVolumeControl;
float currentVolume;float newVolume;
pSession->QueryInterface(__uuidof(ISimpleAudioVolume),(void**)&pVolumeControl);
pVolumeControl->GetMasterVolume(&currentVolume);
newVolume = currentVolume + adjustBy;
if (newVolume < 0) {
newVolume = 0;
}
pVolumeControl->SetMasterVolume(newVolume,NULL);
return 0;
}

我不得不补充:
allocationResult = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);

给类构造函数初始化组件对象模型库以供使用。

关于c++ - 在 ISimpleAudioVolume 的 IAudioSessionControl 上使用 QueryInterface 无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47403462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com