Как проверить зависимости библиотеки stati c в Windows? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть такая зависимость в большом проекте:

MyEXE --> MyDLL --> MyStaticLib

Это означает, что мой исполняемый файл (MyEXE) зависит от dll (MyDLL), а dll использует stati c lib (MyStaticLib). Проблема в том, что я могу вызвать MyStaticLib методы из MyEXE, и он без проблем компилирует и связывает. Я проверил страницу Linker / Input в Visual Studio (2015) проекта MyEXE, но не могу найти MyStaticLib как одну из зависимостей MyEXE.

Теперь вопросы:

  1. Как можно MyEXE вызывать MyStaticLib методы без каких-либо явных зависимостей?
  2. Есть ли инструменты для Windows перечислить все состояния c, используемые исполняемым файлом? (здесь решение для Linux)

Обновление 1: В заголовках MyStaticLib нет директивы #pragma comment(lib, ...). Таким образом, stati c lib не может быть связана с .exe с помощью этой директивы.

1 Ответ

2 голосов
/ 30 марта 2020

MSV C по крайней мере имеет механизм для неявных зависимостей, осуществляемый с помощью директивы #pragma comment (lib, ...). Проверьте заголовки для библиотеки stati c и убедитесь, что ее нет.

Кроме того, если вы используете библиотеку stati c, предоставляемую через vcpkg, и вы выполнили «vcpkg integrate install» и Файл MSBuild добавляется в систему сборки проекта, которая автоматически импортирует все, что сгенерировано vcpkg.

Кроме того, link.exe имеет параметр / VERBOSE: LIB, который выводит библиотеки, в которых выполняется поиск, хотя и не будет рассказать, почему именно эта библиотека была добавлена ​​в сборку.

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