Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Проблемы с использованием WinAPI


Автор: arshvin 21.11.2007, 09:07
Здравствуйте уважаемые эксперты!!! хотел задать вопрос по созданию программ под Win32 на асме...у меня такая проблема: есть например простой код который (который приведен в приложении) вызывает (или должен ;) ) одну API функцию ExitProcess,вроде она описана директивой как внешняя а также директивой extrn ExitProcess: PROC, а вот тут у меня появляется несколько непоняток: если перед этой директивой написать include w32.inc (функция там упоминается) то при обработке этого кода TASM32 он пишет ошибку **Error** w32.inc(5023) PROCDESC(2) Symbol already different kind: EXITPROCESS хотя во включаемом файле заголовок функции упоминается только 1 раз :( (хотя неважно эта функция или другая от этого ничего не меняется сообщение - он ругается и на нее) если попробовать вместо файла inc включить lib то он (TASM32) пишет **Fatal** import32.inc(4) Line too long :( если же попробовать не указывать директиву include то TASM32 это "съедает" но TLINK32 говорит Unresolved external 'EXITPROCESS' referenced from module asm.ASM (причем если в командной строке указываешь после файла obj и библиотеку lib которая как написано содержит основные функции API).Я уже пробовал и ключи /mx /ml для TASM32'го но линкер опять же не хочет это понимать :( Объясните пожалуйста может я что то не так делаю в коде может что то свкючаемым файлом или с библиотеками (хотя я брал несколько пакетов TASM и даже тот который распаковывается - ну типа инсталяционный пакет) может для таких случаев надо использовать какие то ключи для TASM32 и TLINK32? :(незнаю но в книгах по асму этому вопросу не сильно уделяют внимания то есть "...типа есть такая вещь вот так указываешь и все работает"

       .586p
       .model  flat
include import32.inc
extrn ExitProcess: PROC

        .data

        db      0

        .code

 test:
        push    00000000h
        call    ExitProcess

end     test


Автор: dumb 21.11.2007, 15:59
если используется http://www.wasm.ru/baixado.php?mode=tool&id=230, то:
Код

;сборка:
;tasm32 /mx /m4 /z test.asm
;tlink32 -x -c -aa test
.586p
.model flat, stdcall
includelib \tasm5\lib\imp32i.lib
include \tasm5\include\w32.inc
.data
db 0
.code
start:
  call    ExitProcess, 0
end start

между прочим, во всех известных мне дистрибутивах asm'а есть папки examples. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)