не получается слинковать файлы из командной строки

Тема в разделе "WASM.BEGINNERS", создана пользователем kolianiuz, 27 янв 2010.

  1. kolianiuz

    kolianiuz New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2010
    Сообщения:
    3
    История такая. Изучаю асм по урокам икзелиона. До сих пор когда требовалось сделать из асм файла экзешник, пользовался средствами масма32. Но в 8 уроке потребовалось слинковать файл проги с файлом ресурсов и это у меня не получилось. Вроде ввожу все по инструкции, но в консоли выводится только копирайты мелкомягких и никакого сообщения об ошибке, при этом ехе-шника не появляется. Может кто-нить знает в чем здесь может быть проблема?
    Вот что я ввожу(символ в символ):
    c:\masm32\bin\link.exe c:\masm32\progs\menu\windowmenu.obj c:\masm32\progs\menu\menu.res
    Все файлы лежат там, где прописано.
     
  2. x0man

    x0man New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2008
    Сообщения:
    358
    файлик buiild.bat
    Код (Text):
    1. @echo off
    2.  
    3. if exist %1.obj del %1.obj
    4. if exist %1.exe del %1.exe
    5.  
    6. @echo %1
    7.  
    8. \masm32\bin\ml /c /coff %1.asm
    9. if errorlevel 1 goto errasm
    10.  
    11. if not exist rsrc.obj goto nores
    12.  
    13. \masm32\bin\Link /SUBSYSTEM:WINDOWS /OPT:NOREF %1.obj rsrc.obj
    14. if errorlevel 1 goto errlink
    15.  
    16. dir "1.*
    17. goto TheEnd
    18.  
    19. :nores
    20. \masm32\bin\Link /SUBSYSTEM:WINDOWS /OPT:NOREF %1.obj
    21. if errorlevel 1 goto errlink
    22. dir %1.*
    23. goto TheEnd
    24.  
    25. :errlink
    26. echo _
    27. echo Link error
    28. goto TheEnd
    29.  
    30. :errasm
    31. echo _
    32. echo Assembly Error
    33. goto TheEnd
    34.  
    35. :TheEnd
    36.  
    37. pause
     
  3. x0man

    x0man New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2008
    Сообщения:
    358
    & Bres.bat
    Код (Text):
    1. @echo off
    2. \masm32\bin\rc /v rsrc.rc
    3. \masm32\bin\cvtres /machine:ix86 rsrc.res
    4. pause
     
  4. kolianiuz

    kolianiuz New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2010
    Сообщения:
    3
    Признаться, не догнал как пользоваться батниками. Как например заставить build.bat исполнять мой файл, а не %1? Не менять же для этого все %1 на имя моего файла? Я пробовал сам выполнять команды батника из командной строки, но получилось только создать res и obj файлы, а с линковкой опять та же проблема. Извиняюсь за возможно тупые вопросы, но в гугле ничего толкового не нашел :dntknw:
     
  5. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    kolianiuz
    %1 -- это не имя файла а первый параметр после названия bat-файла
    в командной строке это выглядит как buiild.bat windowmenu
    подробнее здесь
     
  6. x0man

    x0man New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2008
    Сообщения:
    358
    Ну вообще то как бы... менять, сложно??? ))) это если запускать батник без параметров...
    ну а иначе вон го по сцылке Mikl__...
     
  7. kolianiuz

    kolianiuz New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2010
    Сообщения:
    3
    Уф..Получилось слинковать с помощью qeditor-a, а батником никак, хотелось бы знать почему. Делаю так: пишу адрес build.bat, затем адрес асм файла, но появляется ошибка lnk1181, что не получается открыть windowmenu.obj. Значит батник до этого не создал obj файл? Почему? Кроме build.bat пытался импользовать bldall и батник, на код которого ты дал ссылку - та же ошибка ((.
     
  8. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    kolianiuz
    поправьте в батнике все %1 на "%~dpn1.расширение" где расширение это часть оставшаяся часть %1.exe например if exist %1.obj заменяется на if exist "%~dpn1.obj"

    после чего берете мышку и просто перетаскиваете нужный asm файл на батник. все должно заработать.

    если хотите разобраться с bat файлами, то советую почитать help к командам и для большего понимания вставлять echo %1 && pause там где хотите выяснить, что же на самом деле представляет из себя та или иная конструкция.