"LNK1104: невозможно открыть файл 'X'": Как узнать, кто хочет, чтобы X связался? - PullRequest
2 голосов
/ 11 сентября 2009

Хорошо, я в тупике. Я возлюсь с некоторыми настройками проекта, пытаюсь начать связывание с библиотекой Y вместо библиотеки X . Когда я выполняю поиск в файле проекта (.vcproj) и во всех листах унаследованных свойств (.vsprops), в библиотеке X не остается ссылок. Я закрыл и снова открыл Visual Studio, чтобы убедиться, что он не поддерживает какую-то старую версию проекта. Однако, как следует из названия, я все еще получаю ошибку ссылки

LINK : fatal error LNK1104: cannot open file 'X'

Когда я сталкиваюсь с такой проблемой с заголовочными файлами (не зная, какой файл включает этот заголовок), я обычно переименовываю проблемный заголовок, чтобы вызвать ошибку C1083: Cannot open include file, которая сообщает мне, какой исходный файл его запрашивает. Но здесь LNK1104 не так полезен. У кого-нибудь есть идеи, как мне это отследить? Спасибо.

1 Ответ

4 голосов
/ 11 сентября 2009

В настройках проекта / linker / general есть настройка "show progress", если вы установите ее в "/ VERBOSE", компоновщик покажет вам все виды вещей, включая найденные им элементы "/ DEFAULTLIB". Это может быть полезно в зависимости от того, идет ли импорт из файла lib или нет.

Вам также необходимо выполнить поиск в исходном коде своего решения «#pragma comment (lib, ...»), что приводит к включению библиотеки по умолчанию во время компоновки.

Если библиотека X похожа на msvcrt, то зависимость, вероятно, исходит от используемой вами внешней или сторонней библиотеки, и единственный практический способ избежать этого - добавить X для опции "игнорировать конкретную библиотеку" в настройках проекта / компоновщик / ввод.

...