Разрешение ссылок |Exe / Dll против Lib - PullRequest
0 голосов
/ 11 октября 2018

Все это в контексте msbuild, но я уверен, что общий принцип применим независимо от системы сборки.Я обновлял некоторые файлы vcxproj для создания некоторых модульных тестов (DLL) и обнаружил ошибку LNK2001, в которой говорилось, что в dbghelp.lib (Windows SDK) не было ссылки на какую-либо функцию.

При сравнении моего unittestФайл vcxproj к vcxproj, связанному с моим тестовым содержимым (библиотека Lib), я не видел никаких ссылок на dbghelp.lib.Мой коллега сообщил мне, что в Lib вам нужно разрешить только ссылки, которые вы используете в lib, но для Exe / Dll вам нужно разрешить ВСЕ ссылки.

Я предполагаю, что в Libто, какие ссылки используются, контролируется автором библиотеки, поэтому необходимо разрешить только те ссылки, которые используются.Для Exe / Dlls такой гарантии нет, поэтому ВСЕ ссылки должны быть разрешены.Это звучит правильно и есть что-то большее?

В связи, есть ли какие-нибудь хорошие книжные рекомендации, которые охватывают эту тему, если бы я хотел узнать больше?

1 Ответ

0 голосов
/ 11 октября 2018

Ответ на ваш главный вопрос - да, это все, что нужно сделать.Вместо этого вы можете обойти необходимость статического разрешения символов, используя вместо этого динамическое разрешение (LoadLibrary / GetProcAddress).

Тема, о которой вы спрашиваете, является такой простой и неотъемлемой частью сборок, что я не осознаю, что что-то рассматривает ее.в качестве основной темы, ни чего-либо, что рассматривает windows-измы в деталях.Есть книга «Линкеры и загрузчики» Джона Р. Левина, которая предлагает более юниксоподобную трактовку темы.И есть наборы документов для конкретного инструмента.

Для инструментов Microsoft я настоятельно рекомендую взглянуть на материал Visual Studio по адресу https://docs.microsoft.com/en-us/visualstudio/?view=vs-2017#pivot=get-started&panel=get-started1 (я предпочел более старый MSDN, но видел, как материал исчезал оттуда, и яиспользуйте локальную копию старого набора документов MSDN, поэтому не можете подробно рассказать, где можно найти материал о параметрах компоновщика на docs.microsoft.com).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...