使用 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。 但我只在我的程序中使用后者。
旧帖子,但希望这个答案可以节省某人一些时间。
我在 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.
根据 microsoft 文档
,对我有用的更新解决方案#include <functiondiscoverykeys.h>
PKEY_Device_FriendlyName
位于 uuid.lib
图书馆。所以你需要在你的源代码中添加一行:
#pragma comment(lib, "uuid.lib")
大多数情况下,您可以使用 MSDN 检查您需要引用哪个库。
#include <initguid.h>
必须先于 DEFINE_PROPERTYKEY
#include <initguid.h>
#include "mmdeviceapi.h" // DEFINE_PROPERTYKEY(PKEY_AudioEngine_DeviceFormat, ...