【问题标题】:How to fix a linker error with PKEY_Device_FriendlyName如何使用 PKEY_Device_FriendlyName 修复链接器错误
【发布时间】:2012-03-19 16:19:17
【问题描述】:

使用 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。 Project->Properties...->Configuration Properties->C/C++->General->Additional Include Directories 中的路径也是正确的。

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

【问题讨论】:

    标签: c++ linker visual-studio-2005


    【解决方案1】:

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

    我在使用 DEVPKEY 属性时遇到了同样的问题 - 例如 DEVPKEY_Device_FriendlyName。我得到了一个非常相似的链接错误。我在这里偶然发现了 cmets 的答案: Referencing GUIDs

    基本上,在包含定义属性键的 devpkey.h 等内容之前添加一个#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.   
    

    【讨论】:

      【解决方案2】:

      根据microsoft docs,对我有用的更新解决方案

      #include <functiondiscoverykeys.h>
      

      【讨论】:

        【解决方案3】:

        PKEY_Device_FriendlyName 驻留在uuid.lib 库中。所以你需要在你的源代码中添加一行:

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

        通常,您可以向 MSDN 查询您需要参考的库。

        【讨论】:

        • 我尝试添加它,但我遇到了同样的错误。
        • 除此之外,您可能使用的是旧版本的 Windows SDK,它还没有这个符号。
        • 至少 6.1 和 7.0 有这个符号。 BTW Visual Studio 2005 不受这些最新 SDK 版本的支持/兼容,这让我怀疑您已安装它们,但编译器/链接器并未使用它们。
        • 您是否也知道 PKEY_AudioEndpoint_Disable_SysFx 驻留在哪个库中?
        • @serup 我不认为它在 .lib 中,但它被定义为 GUID,(请参阅此处的另一个答案)应该有所帮助。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-06
        相关资源
        最近更新 更多