Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Использование wdm.lib и ntoskrnl.lib  (Прочитано 8800 раз)
0 Пользователей и 6 Гостей смотрят эту тему.
bob
Гость
« : 08-06-2008 11:23 » 

Пытаюсь вызвать функции RtlXxx в процедуре DriverEntry. При подключенном wdm.lib или ntoskrnl.lib линкер ругается, что не нашел __imp__ObReferenceObjectByHandle (unresolved external symbol "__declspec(dllimport) void __stdcall RtlInitAnsiString(struct _STRING *,char const *)" (__imp_?RtlInitAnsiString@@YGXPAU_STRING@@PBD@Z) referenced in function "long __stdcall DriverEntry(struct _DRIVER_OBJECT *,struct _UNICODE_STRING *)" (?DriverEntry@@YGJPAU_DRIVER_OBJECT@@PAU_UNICODE_STRING@@@Z)).
ntoskrnl.lib - из windows 2000 DDK. Использую MS Visual Studio 2008
Почему линкер не видит функции? Как это исправить?
Записан
DrGluck
Постоялец

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 09-06-2008 05:27 » 

В смысле в VS линкер ругается? А BUILDом драйвер собирается?
Записан

Good user - dead user
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 09-06-2008 10:18 » 

bob, проверьте свичи компилятора и линкера.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
bob
Гость
« Ответ #3 : 10-06-2008 06:12 » 

Похоже я понял причину. Как мне кажется все дело в декорировании символов, которое наверно отличается для линкера, входящего в состав 2000 DDK и линкера с++ 2008 студии. Если в wdm.h я объявляю нужные мне функции как extern "C", то все это дело прекрасно линкуется.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 10-06-2008 07:26 » 

гы) а у вас часом файл не *.cpp?))))
тогда попробуйте его в *.c переименовать;)

PS а трогать руками wdm.h это как бы "дурной тон"...
« Последнее редактирование: 10-06-2008 07:28 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
bob
Гость
« Ответ #5 : 10-06-2008 16:08 » new

Действительно, меняя расширение с .cpp на .c все связывается номрально без ошибок. Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines