Имеется ввиду MASM32 ...Друзья! Вот здесь вот описание процедуры ValidPE, которая проверяет PE файл на правильность. http://www.wasm.ru/article.php?article=green2red01 Тело процедуры пока не важно, и если его откинуть, то остаются две строки. Вот они Код (Text): ValidPE proc ValidPE endp То есть по приведённой выше ссылке нет ни списка подключаемых файлов, ни библиотек, ни прототипа функции, ничего. Только начало, конец и тело функции. Я эту функцию (пока имеется ввиду "сокращёный" вариант) оформляю отдельным файлом fail_ValidPE.asm, в который помещаются две эти строчки. И всё. Потом пишу тело основной программы (файл osnovn_fail.asm) из которой вызывается функция ValidPE. Вот текст этой программы Код (Text): .386 .model flat, stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\bin\fail_ValidPE.asm ValidPE proto .code start: invoke ValidPE invoke ExitProcess, 0 end start И пытаюсь получить объектный файл командой ml /c /coff osnovn_fail.asm Ничего не получается. Ошибки в файле fail_ValidPE.asm, в первой и второй строчках. А чтобы оформить эту функцию отельным файлом, нужно как минимум такой текст (я его, каюсь, получил опытным путём, отбрасывая всё лишнее, а нигде не прочёл, как надо.) Код (Text): .386 .model flat, stdcall .code start: ValidPE proc ValidPE endp end start Теперь собственно, вопрос- правилен ли предыдущий текст? Может, действительно, достаточно первых двух строчек+тело функции (см. начало вопроса). И вызвать функцию каким-то "хитрым " способом, которого я пока не знаю? ...Ну, а если использовать, более сложную функцию (ValidPE), то, понятно, необходимо и заголовочные файлы подключить и библиотеку... Но автор статьи, указанной по ссылке обходится без них! Или просто он не упоминает об этом, надеясь на более продвинутого программиста, нежели я? Дескать, раз дошёл до такого, сообразишь и сам. Ну, я сомневаюсь в правильности своих действий. ...Думаю, работа, проведённая мной, не покажет в моём лице лентяя, не хотящего юзать Google. Да, честно говоря, мне кажется, я нашёл правильный ответ, от вас хочу услышать лишь подтверждение. Спасибо.
Содержание файла ValidPE.asm Код (Text): .code ValidPE proc ValidPE endp Команда ml /c /coff ValidPE.asm ValidPE.asm(1) : error A2013: .MODEL must precede this directive ValidPE.asm(2) : error A2034: must be in segment block : ValidPE ValidPE.asm(3) : fatal error A1010: unmatched block nesting : ValidPE ...Так что одного .code, по всей видимости, маловато будет...
amvoz Дык эта... Я думал ты его инклудишь в основной. Ты уж поконкретнее вопросы задавай чтоле. А то тебе, то секцию переместить то какие-то требования к файлу. ))) Чтобы заинклудить файл, в котором описана процедура, то достаточно прописать сверху директиву компилятора .code, после которой пойдет тело функции. А если ты собираешься собрать объектник отдельно, то уж тут по всем правилам, как и основной файл. [add] У тя же в заголовке прописано include \masm32\bin\fail_ValidPE.asm Так что ж ты в итоге хочешь получить-то? Объектник отдельно или правильно заинклудить???
Чёрт его знает, что я хотел. Судя по всему заинклудить, коль скоро прописывал include \masm32\bin\fail_ValidPE.asm и пытался функцию вызвать из другого подключаемого файла. ...Да, так. Я пытался заинклудить, но неправильно. Ну, я сейчас благодяря тебе, оба способа знаю, опробировал, нормально работают. Сейчас помечу себе где-нибудь на бумажке. В С как-то пороще был с этим, что ли... Спасибо. До свидания. ...Беда в том, что я не подоходил к теме "объектные файлы" *.asm (*.cpp, *.c, *.pas) и сразу *.exe