Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2008, 00:01   #1
Лотос
 
Регистрация: 04.12.2006
Сообщений: 5
По умолчанию Ошибка при линковке

Я только что начал изучать Assembler и сразу же столкноулся с проблемой: не удаётся скомпелировать первый же пример из книги.
Пример:

Код:
.386 
.model flat 

extrn ExitProcess:PROC 
extrn MessageBoxA:PROC 

.data 

Ttl db "First ASSEMBLER program",0h 
Msg db 'Hello, World!!!!',0h 

.code 

start: 
     push 0h 
         push offset Msg 
         push offset Ttl 
         push 0h 
         call MessageBoxA 
         push 0h 
         call ExitProcess 
end    start
Объектный файл создаётся, но при линковке выдаёт ошибки:

1. obj : error LNK2001: unresolved external symbol ExitProcess
1. obj : error LNK2001: unresolved external symbol MessageBoxA
LINK : error LNK2001: unresolved external symbol _start

Подскажите, пожалуйста, как их исправить.

Последний раз редактировалось rpy3uH; 03.10.2008 в 08:43.
Лотос вне форума Ответить с цитированием
Старый 03.10.2008, 00:14   #2
bakabul
Пользователь
 
Регистрация: 04.09.2008
Сообщений: 15
По умолчанию

я тоже не особо силен в Асемблере но наверное должин бить штото тіпа
iclude 'bla-bla-bla.inc' в котором і должно бить описано што ExitProcess вызываетса из kernel32.dll, а MessageBoxA из user32.dll соответственно
какой именно асемблер используете, MASM, TASM, или еще какой, у них несколоко отличаетса синтаксис
bakabul вне форума Ответить с цитированием
Старый 03.10.2008, 08:44   #3
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Лотос, как ты линкуешь? (параметры)
rpy3uH вне форума Ответить с цитированием
Старый 03.10.2008, 12:00   #4
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

компилятор Masm так как ругается на _start
либо к линку дописать нужные lib`ы при компановке
либо includelib в программу
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 04.10.2008, 00:03   #5
Лотос
 
Регистрация: 04.12.2006
Сообщений: 5
По умолчанию

У меня действительно MASM. Компилирую я кнопкой меню Project\Assemble & Link. Я попытался использовать includelib таким образом:

Код:
.386 
.model flat 

includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

extrn ExitProcess:PROC 
extrn MessageBoxA:PROC 

.data 

Ttl db "First ASSEMBLER program",0h 
Msg db 'Hello, World!!!!',0h 

.code 

start: 
     push 0h 
         push offset Msg 
         push offset Ttl 
         push 0h 
         call MessageBoxA 
         push 0h 
         call ExitProcess 
end    start
Но ничего не изменилось. Выдаёт ровно те же самые ошибки.
от модератора: юзай теги CODE

Последний раз редактировалось rpy3uH; 04.10.2008 в 13:49.
Лотос вне форума Ответить с цитированием
Старый 04.10.2008, 13:50   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Попробуй укажи полные пути к "либам".
rpy3uH вне форума Ответить с цитированием
Старый 04.10.2008, 16:17   #7
Лотос
 
Регистрация: 04.12.2006
Сообщений: 5
По умолчанию

Прописал полные пути: те же ошибки
Лотос вне форума Ответить с цитированием
Старый 04.10.2008, 20:44   #8
Лотос
 
Регистрация: 04.12.2006
Сообщений: 5
По умолчанию

Всё разобрался! Запустил из под TAsm`a и всё заработало.
Лотос вне форума Ответить с цитированием
Старый 04.10.2008, 21:18   #9
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

А под MASM как-то так буде:

Код:
.386 
.model flat, stdcall

include \masm32\include\user32.inc
include \masm32\include\kernel32.inc

includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

.data 

Ttl db "First ASSEMBLER program",0h 
Msg db 'Hello, World!!!!',0h 

.code
start: 
     push 0h 
         push offset Msg 
         push offset Ttl 
         push 0h 
         call MessageBoxA 
         push 0h 
         call ExitProcess 
end    start
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 20.10.2008, 16:56   #10
Windows
Пользователь
 
Регистрация: 25.09.2008
Сообщений: 14
По умолчанию

У меня приблизительно такая-же проблемма, только с тасмом. Тоже при линковке выскакивают приблизительно такие-же ошибки.
Windows вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при удалении... JRcoker Общие вопросы Delphi 8 29.07.2008 22:53
Ошибка при компиляции [QY]'~''LeK1[ee] Помощь студентам 2 28.05.2008 20:46
Ошибка при присваивании NeiL Общие вопросы Delphi 5 16.04.2008 22:24
Ошибка при компиляции zak Общие вопросы C/C++ 2 11.12.2007 18:24
Ошибка при работе с БД malevich БД в Delphi 8 25.11.2007 15:10