error LNK2019 при линковке драйвера

Тема в разделе "LANGS.C", создана пользователем fadday, 11 авг 2010.

  1. fadday

    fadday New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2009
    Сообщения:
    63
    Доброе время суток.

    При линковке драйвера возникает ошибка error LNK2019. DDK ответа на это ошибку не дает. В аттаче логи сборки и исходник. Версия build.exe - 6.1.7063.0, link.exe - 9.0.30729.207. Все из комплекта WDK. Целый день про трахался, буду признателен за помощь)
     
  2. fadday

    fadday New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2009
    Сообщения:
    63
    1>BufferOverflowK.lib(gs_support.obj) : error LNK2019: unresolved external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8
    1>errors in directory c:\driverproject\test
    1>c:\driverproject\test\bufferoverflowk.lib(gs_support.obj) : error LNK2019: unresolved external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8
    1>c:\driverproject\test\objfre_wxp_x86\i386\Test.sys : fatal error LNK1120: 1 unresolved externals
    1>c:\driverproject\test\objfre_wxp_x86\i386\test.sys : error LNK1120: 1 unresolved externals
     
  3. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    скорее всего
    /entry:"DriverEntry" - для линкера
     
  4. fadday

    fadday New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2009
    Сообщения:
    63
    Не уверен. Параметры линкера задаются автоматом, на сколько я понимаю, и если бы они были не верны, то другие драйвера не линковались бы, а с ними все в порядке.
     
  5. fadday

    fadday New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2009
    Сообщения:
    63
    Собираю его одной командой "build /cZgw"
     
  6. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    пересобирите в оболочке студии с явно указанными опциями. возможно
    http://rootkits.su/viewtopic.php?id=808
     
  7. fadday

    fadday New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2009
    Сообщения:
    63
    Вынесено в extern "C" по умолчанию. Как мне кажется дело именно в исходниках, а не в окружении ибо, как уже говорил, другие компилируются и линкуются нормально этим же методом.
     
  8. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Ничего у тебя в extern "C" не вынесено, отсюда и проблемы.

    Код (Text):
    1. extern "C"
    2.  
    3. NTSTATUS irpCreate(IN PDEVICE_OBJECT tdo, IN PIRP irp);
    4. NTSTATUS irpClose (IN PDEVICE_OBJECT tdo, IN PIRP irp);
    5. NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath);
    Здесь extern "C" относится только к irpCreate.
    Не хватает фигурных скобок.
    Посмотри внимательнее исходники на rootkits.su

    PS: а вообще код у тебя всё равно чисто сишный, поменяй расширение на *.с и все дела.
     
  9. fadday

    fadday New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2009
    Сообщения:
    63
    Спасибо!

    А вообще из за чего такая хрень?
     
  10. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Из-за того что С++ имена декорирует, а точкой входа должно быть имя _DriverEntry.