Игнорировать комментарий #pragma (lib, ...)? - PullRequest
1 голос
/ 14 мая 2009

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

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

#pragma comment(lib, ...)

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

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

#pragma comment(lib, foo.lib)

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

1 Ответ

1 голос
/ 14 мая 2009

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

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

Lib

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

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

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

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

...