Как узнать, откуда берется зависимость Kernel32? - PullRequest
0 голосов
/ 17 мая 2018

Я создаю приложение, в которое я только что добавил библиотеку (которая, в свою очередь, использует ряд других библиотек), и по какой-то причине он пытается использовать «GetLogicalProcessorInfo» из kernel32.dll. К сожалению, эта функция более новая, чем версия Windows, которую используют некоторые из моих пользователей (некоторые используют XP SP2, для этой функции требуется XP SP3), поэтому я получил сообщения об ошибках по этому поводу.

Я пытаюсь выяснить, почему эта функция ссылается, но я не могу ее найти. Я не вижу его ни в одном из .lib-файлов, которые я использую. Или в любом файле .cpp или .h. Тем не менее, что-то вызывает использование этой функции.

Итак, есть ли способ узнать, откуда это происходит? Какая функция или какая библиотека ее использует?

Я занимаюсь разработкой в ​​Visual Studio 2015 с помощью компилятора Intel C ++. Есть способ заставить его скомпилироваться для Windows XP, но минимальная поддерживаемая версия - SP3 - до того, как я добавил эту библиотеку, мой код работал нормально. Если мне придется подталкивать людей к переходу на SP3, пусть будет так, но я бы предпочел не делать этого Многие используют компьютер под управлением моего программного обеспечения в качестве устройства, часто даже не подключенного к Интернету, и используют его годами (отсюда и старая ОС).

1 Ответ

0 голосов
/ 17 мая 2018

Если у вас есть отладчик иммунитета или ollydbg, вы можете открыть свою программу в этом.Как только он загрузится, щелкните правой кнопкой мыши и выберите вид, который показывает все модули, которые импортирует ваша программа.Выберите свою библиотеку и снова щелкните правой кнопкой мыши и выберите «Поиск» -> «Все межмодульные вызовы», и вы увидите список функций, которые модуль вызывает из внешних библиотек.Если дважды щелкнуть конкретную функцию, она приведет вас к месту в той программе, которое вызывает эту функцию kernel32.

Скорее всего, вы, вероятно, не сможете от него избавиться, так как он будет использоваться другими частями библиотеки, которые вы не контролируете.

...