【问题标题】:Unresolved external symbols in C++ projectC++ 项目中未解析的外部符号
【发布时间】:2013-11-10 12:18:12
【问题描述】:

这是我的情况(我对 C++ MFC 编码非常陌生,我正在尝试调试现有的应用程序项目)

我在我的代码中使用了这一行(在 Visual Studio 2012 MFC 项目中)

CoCreateInstance(CLSID_PortableDeviceValues, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&x));

当我运行项目时,我得到一个像这样的链接器错误

错误 LNK2001:无法解析的外部符号 _CLSID_PortableDeviceValues

我在代码中引用的所有 CLSID 值都会发生这种情况。像这样

错误 LNK2001:无法解析的外部符号 _CLSID_PortableDeviceKeyCollection

错误 LNK2001:无法解析的外部符号 _IID_IPortableDeviceEventCallback

错误 LNK2001:无法解析的外部符号 _CLSID_PortableDeviceManager

错误 LNK2001:无法解析的外部符号 _CLSID_PortableDeviceServiceFTM

我检查了“CLSID_PortableDeviceValues”的声明,它在“PortableDeviceTypes.h”中找到,我也导入了该库。

我没有收到任何编译器错误,但遇到了上面提到的链接器错误..

有人可以在这里帮助我吗?我无法解决这个问题..

【问题讨论】:

  • 您还导入了哪个库? PortableDeviceGUIDs.lib?
  • 我刚刚在代码中导入了PortableDeviceTypes.h..
  • 哎呀,我导入了你提到的库,它工作了!!非常感谢

标签: c++ visual-studio linker-errors unresolved-external clsid


【解决方案1】:

您需要将 PortableDeviceGUIDs.lib 添加到您的项目中。
(查看MSDN documentation for IPortableDeviceValues中的“要求”部分)

当链接器构建您的项目时,它正在寻找标识符CLSID_PortableDeviceValues 后面的实现数据。此数据位于库 PortableDeviceGUIDs.lib 中,必须告知链接器才能使用此库。

您在源代码中包含的头文件仅声明了符号“CLSID_PortableDeviceValues”,而没有导入其实现。

【讨论】:

  • 谢谢!我试图让 WpdApiSample 与 VS2010 一起工作,当我编译它时它显示了这些错误。项目已更新,但配置不正确。顺便说一句,我对 C++ 很陌生。
猜你喜欢
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 2012-11-19
  • 1970-01-01
  • 2016-10-13
相关资源
最近更新 更多