如何修复 PKEY_Device_FriendlyName 的链接器错误

问题描述 投票:0回答:4

使用 PKEY_Device_FriendlyName 时,我收到以下错误:

Error   1   error LNK2001: unresolved external symbol _PKEY_Device_FriendlyName DefaultAudioDeviceCPP.obj   
Error   2   fatal error LNK1120: 1 unresolved externals C:\Users\srobertson\Documents\Visual Studio 2005\Projects\DefaultAudioDeviceCPP\Debug\DefaultAudioDeviceCPP.exe 

清除这些错误的非常简单的方法是什么? 我包括 functiondiscovery.h 和 functiondiscoverykeys.h。 项目->属性...->配置属性->C/C++->常规->其他包含目录中的路径也是正确的。

编辑:有趣的一件事是错误提到:_PKEY_Device_FriendlyName,而不是 PKEY_Device_FriendlyName。 但我只在我的程序中使用后者。

c++ linker visual-studio-2005
4个回答
18
投票

旧帖子,但希望这个答案可以节省某人一些时间。

我在 DEVPKEY 属性方面遇到了同样的问题 - 例如 DEVPKEY_Device_FriendlyName。我遇到了一个非常相似的链接错误。我在这里的评论中偶然发现了答案: 引用 GUID

基本上,对于定义属性键的 devpkey.h 之类的内容,在 include 之前添加 #include。

所以,在我的文件顶部我有:

#include <setupapi.h>  
#include <initguid.h>  // Put this in to get rid of linker errors.  
#include <devpkey.h>  // Property keys defined here are now defined inline.   

3
投票

根据 microsoft 文档

,对我有用的更新解决方案
#include <functiondiscoverykeys.h>

0
投票

PKEY_Device_FriendlyName
位于
uuid.lib
图书馆。所以你需要在你的源代码中添加一行:

#pragma comment(lib, "uuid.lib")

大多数情况下,您可以使用 MSDN 检查您需要引用哪个库。


0
投票

#include <initguid.h>
必须先于
DEFINE_PROPERTYKEY

#include <initguid.h>
#include "mmdeviceapi.h" // DEFINE_PROPERTYKEY(PKEY_AudioEngine_DeviceFormat, ...
© www.soinside.com 2019 - 2024. All rights reserved.