Я получаю целую кучу ошибок компоновщика в Visual Studios для методов, которые я даже не вызываю напрямую. Я занимаюсь Java-разработкой днем, но у меня есть проект, который мне нужно сделать на C ++, предназначенный для работы на машинах с Windows. Следовательно, я застрял в Visual Studio.
К сожалению, у меня есть проект операционной системы, в который я добавил метод доступа. Я скомпилировал этот проект как файл .lib (компилируется и связывается нормально).
Затем у меня есть собственный проект, использующий эту библиотеку. Я включил библиотеку в Project-> Properties -> Linker -> Input и установил соответствующий каталог в General -> Additional Lib Directories. Я включил заголовок в соответствующий файл и просто вызываю конструктор одного из классов ... даже не вызывая еще созданный мной метод.
Код компилируется, но я получаю следующую гору ошибок компоновщика - в основном ошибки LNK2019 и LNK2001. Я пробовал перекомпилировать с разными настройками (lib, exe и т. Д.), И кажется, что ошибки компоновщика только умножаются. Когда я возвращаюсь к предыдущим настройкам, количество ошибок остается на пике. Любые идеи, как это исправить?
Журнал сборки
Началась сборка: Проект: SpamCapture, Конфигурация: Отладка | Win32
Командные строки:
Создание временного файла «c: \ SpamCapture \ SpamCapture \ SpamCapture \ Debug \ RSP0000103081740.rsp» с содержимым [/ VERBOSE: LIB /OUT:"C:\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.exe / L / "C: \ SpamCapture \ Config \ Debug \" / MANIFEST /MANIFESTFILE:"Debug\SpamCapture.exe.intermediate.manifest "/NODEFAULTLIB:"libcmtd.lib" /NODEFAULTLIB:"nafxcwd.lib "/ DEBUG:" PDB / DEBUG : \ SpamCapture \ SpamCapture \ SpamCapture \ Debug \ SpamCapture.pdb "/ ПОДСИСТЕМА: КОНСОЛЬ / МАШИНА: X86 KeyCapture_Config.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib oolaut32.lib comdlg32.lib advapi32.lle32.lib shell32.lib .lib uuid.lib odbc32.lib odbccp32.lib
". \ Debug \ Interaction.obj"
". \ Debug \ InteractionSet.obj"
". \ Debug \ LogReader.obj"
". \ Debug \ SpamCapture.obj"
". \ Debug \ stdafx.obj"
". \ Debug \ SpamCapture.res"
". \ Debug \ SpamCapture.exe.embed.manifest.res"] Создание командной строки "link.exe @c: \ SpamCapture \ SpamCapture \ SpamCapture \ Debug \ RSP0000103081740.rsp / NOLOGO / ERRORREPORT: PROMPT"
Окно вывода:
Ошибки компоновщика начинаются здесь:
KeyCapture_Config.lib (KeyCapture_ConfigDlg.obj): ошибка LNK2001: неразрешенный внешний символ "public: virtual int __thiscall CWnd :: Create (char const *, char const *, unsigned long, struct tagRECT const &, class CWnd *, unsigned int, struct CCreateContext *) "(? Create @ CWnd @@ UAEHPBD0KABUtagRECT @@ PAV1 @ IPAUCCreateContext @@@ Z)
... еще несколько подобных
KeyCapture_Config.lib (KeyCapture_ConfigDlg.obj): ошибка LNK2019: неразрешенный внешний символ «public: struct HICON__ * thiscall CWinApp :: LoadIconA (unsigned int) const» (? LoadIconA @ CWinApp @@ QBEPAUHICON @@ I @Z) упоминается в функции "public: __thiscall CKeyCapture_ConfigDlg :: CKeyCapture_ConfigDlg (class CWnd *)" (?? 0CKeyCapture_ConfigDlg @@ QAE @ PAVCWnd @@@ Z)
... еще несколько подобных
(? DoDataExchange @ SetupDialog @@ MAEXPAVCDataExchange @@@ Z) C: \ SpamCapture \ SpamCapture \ SpamCapture \ Debug \ SpamCapture.exe: фатальная ошибка LNK1120: 34 неразрешенных внешних объекта
Результаты:
Журнал сборки был сохранен в "файл: // c: \ SpamCapture \ SpamCapture \ SpamCapture \ Debug \ BuildLog.htm" SpamCapture - 44 ошибки, 1 предупреждение (я)
Библиотека _1_ использует классы графического интерфейса MFC (_2_, _3_ и т. Д.), Но приложение, с которым вы ее связываете, является консольным приложением (см. Параметр _4_ в командной строке компоновщика). Это не сработает. Вы должны создать новый проект приложения MFC GUI и добавить библиотеку в этот проект.