Недавно приступил к изучению асм-а , с горя на пополам установил 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
Link.exe /SUBSYSTEM:WINDOWS /c:\masm32\lib Project.obj после слеша строка c:\masm32\lib воспринимается как параметр. Наверное имелось ввиду Link.exe /SUBSYSTEM:WINDOWS /libpath=c:\masm32\lib Project.obj или что-то в этом роде
hakeem Рекомендую в bat- файл вставить строки Код (Text): @ echo off cls rem очищаешь экран, чтобы видеть сообщения относящиеся к конкретной трансляции и линковке set filename=Project rem сюда будешь просто подставлять имя своего asm-файла, чтобы не замусоривать винт ^ кучей батников set masm_path=c:\masm32 rem указываешь путь к своему ассемблеру if exist %name%.exe del %name%.exe if exist %filename%.rc ( %masm_path%\bin\rc /v %filename%.rc %masm_path%\bin\cvtres /machine:ix86 %filename%.res %masm_path%\bin\ml /c /Cp /Gz /I%masm_path%\include /coff /nologo %filename%.asm || exit %masm_path%\bin\Link /SUBSYSTEM:WINDOWS ^ /LIBPATH:%masm_path%\lib /NOLOGO %filename%.obj %filename%.res || exit del %filename%.res ) else ( %masm_path%\bin\ml /c /Cp /Gz /I%masm_path%\include /coff /nologo %filename%.asm || exit %masm_path%\bin\Link /SUBSYSTEM:WINDOWS ^ /LIBPATH:%masm_path%\lib /NOLOGO %filename%.obj ) 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" без указания полного пути
И создание файла с ресурсами при условии что MyProject.asm и MyProject.rc (то есть у них одинаковое имя) если таковой есть
Mikl__ Что то не получается...Транслирует вроде норм. А линк выдает следующее; Assembling asm: Project.asm LINK : fatal error LNK1104: cannot open file "c:\masm32\lib\kernel132.lib" Вы в тексте батника вроде написали имя исходника , я просто взял и создал его , возможно что то сделал неправильно...
Отсюда вывод: в папке LIB нету файла kernel32.lib ! Ищите, куда он мог подеваться. Если поиск ничего не даст, так и быть, не пожалею полмега трафика и выложу его сюда.
этой уйнёй нужно занимать в последнюю очередь, она не является принципиальной... мало ли чего напридумают мелкософтовци.. поставь masm.v.10 - полную версию и MBuilder 20. В масме - оставить папки bin, include, lib. Всё остальное - собери в отделью папку, что бы не спотыкаться об него...там много полезного, но это потом... Mbulder распакуй в папку масм32, поставь ассоциацию с файлами асм, рес и инк - после перезагрузки появятся иконки... потом сделай папки Project_tut2, Project_tut3 и т.д., скопируй туда то, что надо и програмируй ... нужно это проделать как можно быстрее, мы все умрём ... зачем же терять время?
masm32 А что с m32v9r уже ни как ? Для меня очень важно научиться компилировать с командной строки , а у меня эта Х... не получается...
Спасибо всем !!! Особенно Mikl__ и DEEP. Нашел на винте папку lib , и все содержимое скопировал в папку lib дисрибутива , а сам kernel32.lib весит всего 478 kb оказывается как и говорили. Батник Mikl__ создал таки прогу , она выводит сообщение первая прога , "я учу ассемблер"...
У меня написано десяток батников, выполняющих сборку разных экзешников и длл. Батники валяются в папке масм32\бин. Файлы с расширением .асм ассоциированы с этими батниками. Просто пишу асм-файл в нотепаде++, жму првой кнопкой мыши, в выпадающем списке выбираю батник с подходящими прараметрами сброки. Два клика и экзешник готов... Рекомендую.
И еще последний вопрос ...В чем все таки ошибка в том первом батнике на линковку текст: 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