Неразрешенные внешние символы в проекте C++
Это моя ситуация (я новичок в кодировании 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 ответ
Вам нужно будет добавить PortableDeviceGUIDs.lib в ваш проект.
(Посмотрите раздел "Требования" в документации MSDN для IPortableDeviceValues)
Когда компоновщик создает ваш проект, он ищет данные реализации, которые находятся за идентификатором CLSID_PortableDeviceValues
, Эти данные находятся в библиотеке PortableDeviceGUIDs.lib, и компоновщик должен получить указание использовать эту библиотеку.
Заголовочный файл, который вы включили в свой исходный код, объявляет только символ "CLSID_PortableDeviceValues", не импортируя его реализацию.