Линковка приложения в Visual Studio

Тема в разделе "WASM.BEGINNERS", создана пользователем altlogic, 25 июн 2007.

  1. altlogic

    altlogic New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2007
    Сообщения:
    9
    Разработка приложения ведётся в Visual Studio 2005. OC WinXP.
    Программа (написанная не мной) успешно компилируется, но при линковке выдаётся ошибка:
    henum.obj : error LNK2001: unresolved external symbol __imp__NtQuerySystemInformation@16

    Хедер с описанием функции NtQuerySystemInformation ("ntdll.h") подключен

    Гугл не помог, но на Wasm подобные вопросы решались, правда там прога писалась на masm. Надеюсь, умные и добрые люди помогут и мне:)
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    ntdll.lib нужен.
     
  3. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    в опциях линкера подключи ntdll.lib
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Хидеры на линковку не влияют особо. Надо либу подключать
     
  5. altlogic

    altlogic New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2007
    Сообщения:
    9
    Благодарю за помощь. Подключил либу следующим образом:
    #pragma comment (lib, "ntdll.lib")
    Это верное подкючение?

    После подключения вылезла куча ошибок при компиляции, первая из них
    error C2275: 'PSYSTEM_HANDLE_INFORMATION' : illegal use of this type as an expression
    f:\myfiles\c\kp_who_lock_me\ntdll.h(1406) : see declaration of 'PSYSTEM_HANDLE_INFORMATION'
    Завтра буду разбираться, что за ошибки.
     
  6. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    подключил верно.

    неверно воспользовался структурой.
    смотри исходник на наличие ошибок с этой структурой.
    может где-то указатель лишний поставил или недоставил
     
  7. altlogic

    altlogic New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2007
    Сообщения:
    9
    Теперь все проблемы вытекают из моего незнания Вижака... Объявлено всё правильно. К тому же я уверен, что исходный код верен, т.к. написана программа уважаемым Ms-Rem (ссылка на его статью к этой программе http://wasm.ru/print.php?article=lockfileswork)

    Вот кусок кода который сейчас вызывает ошибку компиляции:
    void main()
    {
    printf("Hello!");
    int a;
    PSYSTEM_HANDLE_INFORMATION Info;
    ...
    }

    На объявление переменной а (!!!) компилятор ругается

    error C2143: syntax error : missing ';' before 'type'

    Не могу себе даже представить в чём ошибка. Весь код, что выше мэина я уже коментировал, так что из-за него ошибки быть не может.
    Кстати, интересный компилятор у майкрософт:) Без printf всё компилирует:) printf же я добавил лишь для дебага и сразу нашлось много ошибок
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    если компилируешь как Си-сорц, то перед объявлением переменных опреаторов быть не должно.
     
  9. altlogic

    altlogic New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2007
    Сообщения:
    9
    Ой, и впрямь:) Давно я не писал на Си...

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