Неразрешенный внешний, включая библиотеку ядра aux_klib

Добрый день, поэтому у меня есть вопрос о включении библиотеки aux_klib в мой драйвер режима ядра, по какой-то причине я получаю ту же ошибку для всех функций aux_klib.

Error   1   error LNK2019: unresolved external symbol AuxKlibInitialize referenced in function "unsigned char __cdecl Main(struct MainInfo*)" (?MainInfo@@YAEPEAU__MainInfo@@@Z)

Я сделал комментарий #pragma(lib, "aux_klib.lib") в своем проекте, и мне не повезло, также драйвер закодирован в cpp. Я также добавил библиотеку в свой проект и убедился, что это x64, так как это архитектура сборки проектов. Я также пытался включить функцию через extern «C» без заголовка и только с библиотекой, но не повезло, я также добавил все пути к библиотекам в настройки компоновщика, а что нет. Любые идеи приветствуются!


person Opedn33    schedule 06.05.2017    source источник
comment
для исследования такого рода ошибок необходимо добавить параметр компоновщика /VERBOSE или как минимум /VERBOSE:LIB и представление в выводе - aux_klib.lib используются компоновщиком. AuxKlibInitialize существует в 64-разрядной версии aux_klib.lib   -  person RbMm    schedule 06.05.2017
comment
Я добавил /VERBOSE:LIB в параметры командной строки, и все та же ошибка компоновщика без добавления вывода, также я открыл aux_klib.lib x64 в IDA и посмотрел на экспорт, и все они, кажется, там.   -  person Opedn33    schedule 06.05.2017
comment
этот вариант конечно не исправит ошибку, он для диагностики. no added output - что ты имеешь в виду - по ссылке не печатаются никакие сообщения?! не верю. вы используете msvc для сборки? используйте /VERBOSE и найдите вывод компоновщика - он ищет aux_klib.lib, возможно, вы использовали опцию /nodefaultlib. в этом случае #pragma comment(lib, "aux_klib.lib") не будет иметь никакого эффекта. вам нужно прямо добавить aux_klib.lib на вход компоновщика   -  person RbMm    schedule 06.05.2017
comment
сделал, как вы сказали, избавился от /nodefaultlib, и все та же ошибка без дополнительного вывода prntscr.com/f4ttcc prntscr.com/f4ttgy prntscr.com/f4ttxt   -  person Opedn33    schedule 06.05.2017
comment
но вы добавляете /VERBOSE ? в msvc – Свойства – › Компоновщик – › Общие – › Показать прогресс   -  person RbMm    schedule 06.05.2017
comment
Все тот же результат.   -  person Opedn33    schedule 06.05.2017
comment
в этом случае не знаю, что происходит не так, но когда вы действительно устанавливаете параметр компоновщика /VERBOSE - компоновщик должен выводить много дополнительной информации   -  person RbMm    schedule 06.05.2017
comment
вы также можете удалить Properties-›Linker-›General-›Suppress Startup Bunner - для просмотра фактической командной строки компоновщика - существует ли /VERBOSE в нем?   -  person RbMm    schedule 06.05.2017
comment
prntscr.com/f4u0nn также отключен баннер запуска, ничего не изменилось xD   -  person Opedn33    schedule 06.05.2017
comment
не знаю, почему вывод компоновщика не показан для вас. когда я удаляю /NOLOGO и устанавливаю /VERBOSE - я вижу много сообщений компоновщика - Linking...Microsoft (R) Incremental Linker Version .. Searching libraries..Finished searching libraries.. и т. д. почему это не отображается для вас - трудно сказать   -  person RbMm    schedule 06.05.2017


Ответы (2)


Properties->Linker->Input->Additional Dependencies add "AUX_KLIB.LIB"

Это сработало для меня

person Паша Чернышёв    schedule 23.04.2021

У меня была такая же проблема с привязкой Aux_klib.lib, поэтому я поставил /VERBOSE:Lib.

Щелкните правой кнопкой мыши проект -> Свойства -> Компоновщик -> Общие -> Показать прогресс

Насколько я понимаю, For Libraries Searched /VERBOSE:Lib показывает поиск библиотек, а я заметил, что Aux_klib.lib в этом поиске нет. И я заметил еще одну вещь в выводе, /NODEFAULTLIB передается и в командной строке.

Как говорит @RbMm,

он ищет aux_klib.lib, возможно, вы использовали параметр /nodefaultlib. в этом случае #pragma comment(lib, "aux_klib.lib") не будет иметь никакого эффекта.

Так что я изменил Ignore All Default Libraries

Щелкните правой кнопкой мыши проект -> Свойства -> Компоновщик -> Ввод -> Игнорировать все библиотеки по умолчанию

до No, и все отлично скомпилировано и скомпилировано.

TL;DR

Короче, попробуйте поменять Ignore All Default Libraries под Linker на No и использовать #pragma comment(lib, "aux_klib.lib").

person Oriel Cochavi    schedule 13.01.2018