Помогите новичку с link-ом

Тема в разделе "WASM.BEGINNERS", создана пользователем hakeem, 5 июн 2008.

  1. hakeem

    hakeem New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    74
    Недавно приступил к изучению асм-а , с горя на пополам установил m32v9r.
    Кое как оттранслиловал Project.asm (код ниже) , obj-файл создается
    bat-файл : Ml.exe /c /coff /Cp Project.asm


    .386 ;
    .model flat, stdcall ;
    option casemap :none ;


    include C:\MASM32\INCLUDE\windows.inc
    include C:\MASM32\INCLUDE\user32.inc
    include C:\MASM32\INCLUDE\kernel32.inc
    includelib C:\MASM32\LIB\kernel32.lib
    includelib C:\MASM32\LIB\user32.lib

    .data
    szMBText db "Я учу Ассемблер!",0 ;
    szMBHead db "Первая программа",0 ;

    .code

    start:

    invoke MessageBox,NULL,ADDR szMBText,ADDR szMBHead,MB_OK;
    invoke ExitProcess,0 ;

    end start


    но с link-ом проблема , выдает....

    LINK : warning LNK4044: unrecognized option "c:\masm32\lib"; ignored
    LINK : fatal error LNK1104: cannot open file "c:\masm32\lib\kernel132.lib"


    bat-файл : Link.exe /SUBSYSTEM:WINDOWS /c:\masm32\lib Project.obj
     
  2. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    hakeem
    kernel32.lib вообще-то, а не то, что у тебя написано.
     
  3. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Link.exe /SUBSYSTEM:WINDOWS /c:\masm32\lib Project.obj
    после слеша строка c:\masm32\lib воспринимается как параметр. Наверное имелось ввиду Link.exe /SUBSYSTEM:WINDOWS /libpath=c:\masm32\lib Project.obj или что-то в этом роде
     
  4. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    hakeem
    Рекомендую в bat- файл вставить строки
    Код (Text):
    1. @ echo off
    2. cls
    3. rem очищаешь экран, чтобы видеть сообщения относящиеся к конкретной трансляции и линковке
    4. set filename=Project
    5. rem сюда будешь просто подставлять имя своего asm-файла, чтобы не замусоривать винт ^
    6. кучей батников
    7. set masm_path=c:\masm32
    8. rem указываешь путь к своему ассемблеру
    9. if exist %name%.exe del %name%.exe
    10. if exist %filename%.rc (
    11. %masm_path%\bin\rc /v %filename%.rc
    12. %masm_path%\bin\cvtres /machine:ix86 %filename%.res
    13. %masm_path%\bin\ml /c /Cp /Gz /I%masm_path%\include /coff /nologo %filename%.asm  || exit
    14. %masm_path%\bin\Link /SUBSYSTEM:WINDOWS ^
    15. /LIBPATH:%masm_path%\lib /NOLOGO %filename%.obj %filename%.res || exit
    16. del %filename%.res
    17. ) else (
    18. %masm_path%\bin\ml /c /Cp /Gz /I%masm_path%\include /coff /nologo %filename%.asm  || exit
    19. %masm_path%\bin\Link /SUBSYSTEM:WINDOWS ^
    20. /LIBPATH:%masm_path%\lib /NOLOGO %filename%.obj
    21. )
    22. if exist %filename%.obj del %filename%.obj
    символ ^ позволяет разрывать длинные строки
    || exit выход из компиляции/линковки при обнаружении ошибки
    ключ /Gz дает возможность писать .model flat вместо .model flat,stdcall
    ключ /Cp дает возможность убрать строку option casemap :none
    ключ /LIBPATH:%masm_path%\lib дает возможность писать "includelib kernel32.lib" без указания полного пути
    ключ /I%masm_path%\include дает возможность писать "include kernel32.inc" без указания полного пути
     
  5. hakeem

    hakeem New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    74
    Mikl__

    Я полагаю в этом батнике и трансляция и линковка ?
     
  6. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    И создание файла с ресурсами при условии что MyProject.asm и MyProject.rc (то есть у них одинаковое имя) если таковой есть
     
  7. hakeem

    hakeem New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    74
    Mikl__

    Что то не получается...Транслирует вроде норм. А линк выдает следующее;

    Assembling asm: Project.asm
    LINK : fatal error LNK1104: cannot open file "c:\masm32\lib\kernel132.lib"

    Вы в тексте батника вроде написали имя исходника , я просто взял и создал его , возможно что то сделал неправильно...
     
  8. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    ста тридцати двух разрядный керналь %) ох, доживём ли...
    единицу убери и станет тебе щастье ;)
     
  9. hakeem

    hakeem New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    74
    DEEP

    Я извиняюсь , это сообщение я набирал от руки , это моя ошибка , а там все OK (правильно)...
     
  10. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Отсюда вывод: в папке LIB нету файла kernel32.lib !
    Ищите, куда он мог подеваться. Если поиск ничего не даст, так и быть, не пожалею полмега трафика и выложу его сюда.
     
  11. hakeem

    hakeem New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    74
    DEEP

    В папке bin вижу lib.exe , а в папке lib ни чего нет...
     
  12. hakeem

    hakeem New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    74
    Где можно взять эту библиотеку ?
     
  13. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Ничего не понимаю.
    Вы откуда дистрибутив асма брали?
    Поищите, чтоль, на винте, по маске *.lib
     
  14. masm32

    masm32 New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    147
    этой уйнёй нужно занимать в последнюю очередь, она не является принципиальной... мало ли чего напридумают мелкософтовци..
    поставь masm.v.10 - полную версию и MBuilder 20.

    В масме - оставить папки bin, include, lib. Всё остальное - собери в отделью папку, что бы не спотыкаться об него...там много полезного, но это потом... Mbulder распакуй в папку масм32, поставь ассоциацию с файлами асм, рес и инк - после перезагрузки появятся иконки... потом сделай папки Project_tut2, Project_tut3 и т.д., скопируй туда то, что надо и програмируй ...
    нужно это проделать как можно быстрее, мы все умрём ... зачем же терять время?
     
  15. hakeem

    hakeem New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    74
    masm32


    А что с m32v9r уже ни как ?
    Для меня очень важно научиться компилировать с командной строки , а у меня эта Х... не получается...
     
  16. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    на www.wasm.ru
     
  17. hakeem

    hakeem New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    74
    Спасибо всем !!! Особенно Mikl__ и DEEP. Нашел на винте папку lib , и все содержимое скопировал в папку lib дисрибутива , а сам kernel32.lib весит всего 478 kb оказывается как и говорили. Батник Mikl__ создал таки прогу , она выводит сообщение первая прога , "я учу ассемблер"...
     
  18. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    У меня написано десяток батников, выполняющих сборку разных экзешников и длл. Батники валяются в папке масм32\бин. Файлы с расширением .асм ассоциированы с этими батниками.
    Просто пишу асм-файл в нотепаде++, жму првой кнопкой мыши, в выпадающем списке выбираю батник с подходящими прараметрами сброки. Два клика и экзешник готов... Рекомендую.
     
  19. hakeem

    hakeem New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    74
    Aspire

    Спасибо большое за инфу...
     
  20. hakeem

    hakeem New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    74
    И еще последний вопрос ...В чем все таки ошибка в том первом батнике на линковку

    текст: Link.exe /SUBSYSTEM:WINDOWS /c:\masm32\lib Project.obj

    ранее выдавал ошибку:

    LINK : warning LNK4044: unrecognized option "c:\masm32\lib"; ignored
    LINK : fatal error LNK1104: cannot open file "c:\masm32\lib\kernel32.lib"

    Теперь естественно только:

    LINK : warning LNK4044: unrecognized option "c:\masm32\lib"; ignored