win1.asm(29) : error A2006: undefined symbol : ShellExecute - почему?

Тема в разделе "WASM.BEGINNERS", создана пользователем dZentle_man, 9 мар 2009.

  1. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    Блин, весь извелся, никак не пойму почему компилятор не видит функции. При попытке откомпилить выдает следующее:

    Исходный текст:

     
  2. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    http://www.wasm.ru/article.php?article=1001002
    Обратить внимание на include!
     
  3. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    А че на него обращать то? Все буква в букву, как и там. Статью читал уже. Либо в упор не вижу (тогда может напишешь в чем конкретно косяк?), либо дело не в этом.
     
  4. agrischuk

    agrischuk New Member

    Публикаций:
    0
    Регистрация:
    12 янв 2009
    Сообщения:
    47
    Подсказка:
    extrn __imp__ExitProcess@4 : dword
    ExitProcess equ __imp__ExitProcess@4

    В книжке, если читать внимательнее приведены inc файлы. Возможно в новом издании еще больше ошибок наделали.
     
  5. mupsy

    mupsy New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2008
    Сообщения:
    55
    dZentle_man
    include /masm32/include/kernel32.inc
    include /masm32/include/user32.inc
    include /masm32/include/shell32.inc
    includelib \masm32\lib\shell32.lib
    includelib \masm32\lib\kernel32.lib
    includelib \masm32\lib\user32.inc
    вот так напиши в начале...
     
  6. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    agrischuk, спасибо, помогло. Насчет .inc знаю, но мой компилятор выдает на них сотню ошибок "A2119: language type must be specified", поэтому я решил в этом случае задать все вручную, чтобы хотя бы понять как оно работает. В книжках че попало пишут. Во времена Зубкова еще даже 98-й винды не существовало в природе, поэтому мой компилятор может не поддерживать его пример. У Iczelion'а все завязано на invoke, но invoke особого понимания как все происходит на самом деле не дает - случись ошибка и я не буду знать где ее искать. Собственно на invoke я тоже пробовал завязать, но так ничего и не вышло.


    В общем сейчас компилятор функции видит, так что по теме мне помогли. Всем спасибо за внимание
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.786
    dZentle_man посмотри здесь
    можно сразу писать без "ExitProcess equ __imp__ExitProcess@4"
    push ebx
    call _imp__ExitProcess@4
    тогда достаточно "includelib \masm32\lib\kernel32.lib" а строка "include \masm32\include\kernel32.inc" не нужна -- это для вызова invoke
     
  8. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    Ну я в общем то выбрал средний вариант - в сегменте данных определил импорт функции через equ, в обход .inc файлов. Способ вполне прозрачный и удобнее, чем писать полное имя функции в сегменте кода. За ссылку спасибо, раскурю на досуге.