Не уверен, каков ваш уровень знаний, но вот основы.
Ниже приведена ошибка компоновщика из VS 2005 - да, это огромный беспорядок, если вы не знакомы с ним.
ByteComparator.obj : error LNK2019: unresolved external symbol "int __cdecl does_not_exist(void)" (?does_not_exist@@YAHXZ) referenced in function "void __cdecl TextScan(struct FileTextStats &,char const *,char const *,bool,bool,__int64)" (?TextScan@@YAXAAUFileTextStats@@PBD1_N2_J@Z)
Есть пара моментов, на которых следует сосредоточиться:
- "ByteComparator.obj" - найдите файл ByteComparator.cpp, это источник проблемы компоновщика
- "int __cdecl does_not_exist (void)" - этот символ не может быть найден, в данном случае функция с именем did_not_exist ()
На этом этапе во многих случаях самый быстрый способ разрешения - это найти в базе кода эту функцию и найти, где находится реализация. Как только вы узнаете, где реализована функция, вам просто нужно убедиться, что эти два места связаны друг с другом.
Если вы используете VS2005, вы бы использовали контекстное меню «Зависимости проекта ...». Если вы используете gcc, вы должны посмотреть в своих make-файлах шаг генерации исполняемого файла (gcc вызывается с кучей файлов .o) и добавить отсутствующий файл .o.
Во втором сценарии у вас может отсутствовать «внешняя» зависимость, для которой у вас нет кода. Библиотеки Win32 часто реализуются в статических библиотеках, на которые вы должны ссылаться. В этом случае перейдите на MSDN или "Microsoft Google" и выполните поиск API. Внизу описания API указано имя библиотеки. Добавьте это в список свойств проекта «Свойства конфигурации-> Компоновщик-> Ввод-> Дополнительные зависимости». Например, страница timeGetTime () на MSDN говорит вам использовать Winmm.lib внизу страницы.