Найти неразрешенный внешний символ с помощью аналогичного проекта, который строится нормально

#visual-studio-2010 #visual-studio

#visual-studio-2010 #visual-studio

Вопрос:

У меня есть два проекта на C, которые используют одну и ту же библиотеку.

Один проект компилируется и связывается нормально, другой получает ошибку компоновщика «неразрешенная внешняя ссылка» для символа, на который ссылается функция, которую оба проекта вызывают из одной и той же статической библиотеки.

Насколько я могу судить, все важные свойства компоновщика и генерации кода равны между ними.

Есть ли способ использовать рабочий проект, чтобы выяснить, где компоновщик в ЭТОМ проекте находит символ? Я использовал метод проб и ошибок, включая все больше и больше библиотек из одного проекта в другой, но безуспешно.

Ответ №1:

Я нашел то, что хотел! В свойствах проекта, в разделе Компоновщик-> Отладка, есть опция с именем «Сгенерировать файл карты». Это можно сделать в командной строке с помощью /MAP .

Сгенерированный файл карты получает то же имя, что и проект (по умолчанию) с расширением .map в качестве файла. Это текстовый файл, содержащий, среди прочего, имя библиотеки, в которой определен каждый символ.

Используя файл map для моего проекта, который создает, я смог быстро найти определение символа, отсутствующего в моем неработающем проекте.