Вопрос

Я пытаюсь выполнить ссылку на ранее созданные файлы .obj (используя последнюю версию MSVC).

Когда эти .obj были созданы, в исходном коде было указано:

#pragma comment(lib, ...)

Таким образом, компоновщик пытается связать статические библиотеки, указанные в источнике.Есть ли способ указать компоновщику игнорировать эти библиотеки, чтобы я мог указать свои собственные?

например, если часть источника сделала следующее:

#pragma comment(lib, foo.lib)

Во время компоновки я бы хотел, чтобы компоновщик игнорировал «foo.lib» и вместо этого ссылался на «bar.lib».

Это было полезно?

Решение

Почему бы не изменить источник ( #pragma директивы)?

От comment Страница MSDN:

библиотека

Помещает запись поиска в библиотеке в объектный файл.Этот тип комментария должен сопровождаться параметром commentstring, содержащим имя (и, возможно, путь) библиотеки, в которой компоновщик должен искать.Имя библиотеки следует за записями поиска библиотеки по умолчанию в объектном файле;компоновщик ищет эту библиотеку так же, как если бы вы назвали ее в командной строке, при условии, что библиотека не указана с помощью /nodefaultlib.Вы можете поместить несколько записей поиска в библиотеке в один и тот же исходный файл;каждая запись появляется в объектном файле в том же порядке, в котором она встречается в исходном файле.

Если порядок библиотеки по умолчанию и добавленной библиотеки важен, компиляция с ключом /Zl предотвратит размещение имени библиотеки по умолчанию в объектном модуле.Затем можно использовать вторую прагму комментария для вставки имени библиотеки по умолчанию после добавленной библиотеки.Библиотеки, перечисленные с этими прагмами, появятся в объектном модуле в том же порядке, в котором они находятся в исходном коде.

Вы также можете использовать NODEFALTLIB опция компоновщика для остановки foo.lib от связи и укажите bar.lib как и другие файлы lib (т.е.через панель свойств компоновщика).

В противном случае переименуйте bar.lib к foo.lib (дерзкое решение).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top