ошибка LNK2019: неразрешенный внешний символ - невидимый экземпляр проблемы
Im имеет ошибку LNK2019: проблема неразрешенных внешних символов.
У меня есть 2 файла, и я перемещаю их в общую папку, поэтому 2 разных проекта могут использовать класс. Там есть другие классы.
Проблема в том, что когда я вызываю класс из основного одного из проектов,
error LNK2019: unresolved external symbol "public: __thiscall CProcessCommandLine::~CProcessCommandLine(void)" (??1CProcessCommandLine@@QAE@XZ) referenced in function _main
error LNK2019: unresolved external symbol "public: bool __thiscall CProcessCommandLine::Wait(void)const " (?Wait@CProcessCommandLine@@QBE_NXZ) referenced in function _main
error LNK2019: unresolved external symbol "public: class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const & __thiscall CProcessCommandLine::getTargetNamesVect(void)" (?getTargetNamesVect@CProcessCommandLine@@QAEABV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@XZ) referenced in function _main
error LNK2019: unresolved external symbol "public: __thiscall CProcessCommandLine::CProcessCommandLine(void)" (??0CProcessCommandLine@@QAE@XZ) referenced in function _main
Когда я открываю файл заголовка и щелкаю правой кнопкой мыши по одной из функций, и переходим к определению, оно не переходит к определению в.cpp. Когда я нажимаю правой кнопкой мыши на функцию в.cpp и говорю, переходите к определению, она говорит: "Символ не определен".
Кто-нибудь знает, почему это может произойти? Оба.h и.cpp находятся в одном месте и находятся в дополнительных каталогах Include.
РЕДАКТИРОВАТЬ:
Следующий код существует в других файлах в этой папке:
#ifdef PROJ1
#include "class1.h"
#elif PROJ2
#include "class2.h"
#endif
Я никогда раньше этого не видел. Они используются в коде, но только для включения правильного заголовка в зависимости от того, в каком проекте он используется. Вышеуказанное находится в.cpp других классов в этой папке. Поэтому я положил его сюда. Но в других классах проект, к которому он не принадлежит, является серым. Когда я помещаю его в.h, он выделяет правильный заголовок. Но по какой-то причине этот.cpp не распознается как часть проекта.
Если ваша функция принадлежит к другому модулю, чем тот, который вы строите, вам придется экспортировать классы:
#ifdef THIRD_MODULE
#define DLLIMPEXP _declspec(dllexport)
#else
#define DLLIMPEXP _declspec(dllimport)
#endif
class DLLIMPEXP CProcessCommandLine
{
//...
};
вы создаете проект, который определяет этот класс с определенным THIRD_MODULE
.
Этот проект будет генерировать .lib
файл, который вы должны добавить к дополнительным зависимостям в настройках компоновщика вашего основного проекта.