Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在ISimpleAudioVolume的IAAudioSessionControl上使用QueryInterface无法编译_C++_Windows_Visual Studio 2015 - Fatal编程技术网

C++ 在ISimpleAudioVolume的IAAudioSessionControl上使用QueryInterface无法编译

C++ 在ISimpleAudioVolume的IAAudioSessionControl上使用QueryInterface无法编译,c++,windows,visual-studio-2015,C++,Windows,Visual Studio 2015,几个小时以来,我一直在为这个问题发疯。基本上,我已经开始开发一种服务,允许用户通过TCP向服务器应用程序发送数据包来控制各个应用程序的音量。这是一个爱好者项目,以进一步加深我对C++的认识。 我正在使用ISessionEnumerator接口构建会话指针列表。我认为可以直接从会话中控制音量。我很快就发现我需要另一个接口,就像ISimpleAudioVolume接口一样糟糕。到目前为止,我有以下用于检索接口的代码: int AudioManager::AdjustVolumeBy(IAudioSe

几个小时以来,我一直在为这个问题发疯。基本上,我已经开始开发一种服务,允许用户通过TCP向服务器应用程序发送数据包来控制各个应用程序的音量。这是一个爱好者项目,以进一步加深我对C++的认识。 我正在使用ISessionEnumerator接口构建会话指针列表。我认为可以直接从会话中控制音量。我很快就发现我需要另一个接口,就像ISimpleAudioVolume接口一样糟糕。到目前为止,我有以下用于检索接口的代码:

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>
#pragma一次
#包括
#包括
#包括
#包括
#包括
#包括

此外,在创建项目时,我创建了它,包括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;
}

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

也许您没有将_WIN32_WINNT和WINVER变量设置为Vista或更高版本?谢谢你的建议。不幸的是,当我将其包含在VisualStudio为该项目创建的头文件中时,这无助于解决问题。
allocationResult = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);