C ++项目中未解析的外部符号

时间:2013-10-30 18:01:20

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

这是我的情况(我对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”中找到,我也导入了该库。

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

有人可以帮帮我吗。我无法解决这个问题。

1 个答案:

答案 0 :(得分:3)

您需要在项目中添加 PortableDeviceGUIDs.lib (查看MSDN documentation for IPortableDeviceValues

中的“要求”部分

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

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