1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Проблема компиляцией на MASM32

Тема в разделе "MASM", создана пользователем Jin X, 8 апр 2017.

  1. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    348
    Адрес:
    Кольца Сатурна
    В общем, я не знаю что произошло, но у меня вдруг перестала работать опция /I (путь к include-файлам) в ml. Раньше всё работало, теперь выдаёт ошибку типа такого:
    Код (Text):
    1. pe.asm(8) : fatal error A1000: cannot open file : WINDOWS.INC
    В исходнике указано имя файла без пути:
    Код (Text):
    1. INCLUDE WINDOWS.INC
    Файл этот точно есть и точно по указанному пути.
    Если установить переменную окружения INCLUDE=этому пути или задать полный путь в исходнике, всё ок.

    Но это ещё не всё. Линкер тоже выдаёт (даже если прописать в исходнике полные пути к lib'ам):
    Код (Text):
    1. D:\pe.obj : warning LNK4033: converting object format from OMF to COFF
    2. pe.obj : error LNK2001: unresolved external symbol _ExitProcess@4
    3. LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
    4. pe.exe : fatal error LNK1120: 2 unresolved externals
    Т.е. ощущение, что не только /I перестал работать, но и /coff, например. Да и lib'ы почему-то не линкуются, судя по всему...

    Переустановка masm32 не помогает...
    Пробовал подменить даже содержимое папки bin (версия 6.14) файлами версии 6.11 (скачанной из инета) - та же ерунда.

    Т.е. проблема явно не в компиляторе самом, а в чём - ума не приложу! Загадка какая-то!

    Понимаю, что инфы мало, но даже не знаю что ещё сообщить. Всё, что было сделано (перед тем, как проблема появилась) - это компиляция пары исходников через ml64. Попытка установить MASMsetup.EXE, скачанный с сайта Microsoft (но вышла ошибка "MS Visual C++ Express Edition 2005 required" и забил это). Ну ещё я случайно скопировал несколько *.lib-файлов для 64 бит в папку lib для 32 бит (без замены, но потом удалил эти файлы). Обновление Notepad ++ я уж не беру в расчёт. Но в любом случай, повторюсь, masm32 (скачанный с masm32.com) я переустанавливал!

    Что делать?
    Может, кто-то сталкивался с этим уже?

    p.s. Исходник пустой:
    Код (Text):
    1. .586P
    2. .MODEL Flat,StdCall
    3. OPTION CASEMAP:NONE
    4.  
    5. INCLUDE WINDOWS.INC
    6. INCLUDE KERNEL32.INC
    7. INCLUDE USER32.INC
    8. INCLUDELIB KERNEL32.LIB
    9. INCLUDELIB USER32.LIB
    10.  
    11. .CODE
    12.  
    13. Start:
    14.  
    15.     invoke  ExitProcess, NULL
    16.  
    17. END Start
     
    Последнее редактирование: 8 апр 2017
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.512
    Пути пропишите. И версию смените компиля между прочим.
     

    Вложения:

    • ml.zip
      Размер файла:
      169,5 КБ
      Просмотров:
      334
    Jin X нравится это.
  3. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    348
    Адрес:
    Кольца Сатурна
    Indy_, спасибо, заработало.
    Но! У меня несколько (хочется даже сказать "пару") дней назад стоял ml 6.14 и всё работало. И пути я не прописывал!
    Как это можно понять?
     
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.512
    Jin X,

    Причин множество может быть, может авер или есчо какой софт мешает, может что то заразило систему или обновления.