Tuesday, 3 April 2018

visual studio - Unresolved external symbols in C++ project




This is my situation (I am very new to C++ MFC coding and I am trying to debug an existing application project)



I use this line in my code (in a visual studio 2012 MFC project)




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




While I run the project, i get a linker error like this





error LNK2001: unresolved external symbol _CLSID_PortableDeviceValues




This happens for all the CLSID values that I am referring to in the code. Like this




error LNK2001: unresolved external symbol
_CLSID_PortableDeviceKeyCollection




error LNK2001: unresolved external symbol _IID_IPortableDeviceEventCallback



error LNK2001: unresolved external symbol _CLSID_PortableDeviceManager



error LNK2001: unresolved external symbol _CLSID_PortableDeviceServiceFTM




I checked for the declaration of "CLSID_PortableDeviceValues" and it was found in "PortableDeviceTypes.h" and I have imported that library as well.




I do not get any compiler error, but run into the linker errors mentioned above..



Can someone please help me out here. I could not resolve this ..


Answer



You will need to add PortableDeviceGUIDs.lib to your project.
(Look up the section "Requirements" in the MSDN documentation for IPortableDeviceValues)



When the linker builds your project, it is looking for the implementation data that is behind the identifier CLSID_PortableDeviceValues. This data is in the library PortableDeviceGUIDs.lib, and the linker has to be told to use this library.



The header file you included in your source code only declares the symbol "CLSID_PortableDeviceValues", without importing its implementation.


No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...