#visual-studio-2010 #visual-studio
#visual-studio-2010 #visual-studio
Вопрос:
У меня есть два проекта на C, которые используют одну и ту же библиотеку.
Один проект компилируется и связывается нормально, другой получает ошибку компоновщика «неразрешенная внешняя ссылка» для символа, на который ссылается функция, которую оба проекта вызывают из одной и той же статической библиотеки.
Насколько я могу судить, все важные свойства компоновщика и генерации кода равны между ними.
Есть ли способ использовать рабочий проект, чтобы выяснить, где компоновщик в ЭТОМ проекте находит символ? Я использовал метод проб и ошибок, включая все больше и больше библиотек из одного проекта в другой, но безуспешно.
Ответ №1:
Я нашел то, что хотел! В свойствах проекта, в разделе Компоновщик-> Отладка, есть опция с именем «Сгенерировать файл карты». Это можно сделать в командной строке с помощью /MAP .
Сгенерированный файл карты получает то же имя, что и проект (по умолчанию) с расширением .map в качестве файла. Это текстовый файл, содержащий, среди прочего, имя библиотеки, в которой определен каждый символ.
Используя файл map для моего проекта, который создает, я смог быстро найти определение символа, отсутствующего в моем неработающем проекте.