Помогите новичку отлинковать, пожалуйста

Вопросы по программированию, не подходящие в другие разделы.

Модераторы: Naeel Maqsudov, C_O_D_E

Ответить
Арсений
Сообщения: 5
Зарегистрирован: 04 июл 2008, 00:40

Здравствуйте. Такая проблема: теорию изучил, но с практикой облом. Компилировать научился, но с линковкой возникают проблемы, решение которых я не могу найти. Написал простейшую програмку. Вот она:

Код: Выделить всё

.386
.model flat, stdcall
exitprocess proto,
 x:dword
.code
start proc
mov eax, 50
add eax, 20
invoke exitprocess, 0
start endp
end start
вот, компиляция и линковка
http://depositfiles.com/files/6380780
Пожалуйста, подскажите, как правильно провести линковку(для консоли).
Заранее благодарен, Быков Арсений.
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

библиотеки нужны masm kernel32.lib
у вас линковщик не занет что такое "exitprocess"
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

вот пример

Код: Выделить всё

.386
.model flat, stdcall
option casemap :none
ExitProcess PROTO :D WORD
.code
start proc
mov eax, 50
add eax, 20
invoke ExitProcess, 0
start endp
end start
компиляция
ml /c testlink.asm
линковка
link32 /debug /subsystem:console testlink.obj kernel32.lib /ENTRY:_start
Вложения
kernel32.zip
(30.94 КБ) 26 скачиваний
Арсений
Сообщения: 5
Зарегистрирован: 04 июл 2008, 00:40

линковка
link32 /debug /subsystem:console testlink.obj kernel32.lib /ENTRY:_start
Пробовал, не получилось. Ссылку на скрин укажу позже. Пожалуйста, уточните(у меня link32 не нашлось) компилятор и его версию(у мня masm32 9.0). Ещё хотелось бы узнать что за опция /ENTRY:_start .
Арсений
Сообщения: 5
Зарегистрирован: 04 июл 2008, 00:40

airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

C:\masm32\BIN>link /debug /subsystem:console testlink.obj C:\masm32\lib\kernel32.lib /ENTRY:start

/ENTRY:start-указание точки входа, имя функции в правильном регистре напишите ExitProcess<>exitprocess
Арсений
Сообщения: 5
Зарегистрирован: 04 июл 2008, 00:40

Спасибо, airyashov, что помогаете, но компилятор опять: http://depositfiles.com/files/6537731
Пожалуйста, подскажите, что ещё можно сделать, или на какой компилятор перейти.
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

просто развлечения для..
скачал MASM32 отсюда
install.exe не запустился, ручками запустил 7-Zip и распаковал архив в
C:\MASM32
переписал в C:\MASM32\lib выложенный airyashov kernel32.lib
перешёл в папку C:\MASM32\
создал там файл testlink.asm
.386
.model flat, stdcall
option casemap :none
ExitProcess PROTO :D WORD
.code
start proc
mov eax, 50
add eax, 20
invoke ExitProcess, 0
start endp
end start
перешел в папку C:\MASM32\bin\
и там выполнил последовательно команды:
ml /c C:\MASM32\testlink.asm
link /debug /subsystem:console testlink.obj C:\masm32\lib\kernel32.lib /ENTRY:start
получил одно предупреждение:
(testlink.obj : warning LNK4033: converting object format from OMF to COFF)
но создался файл C:\MASM32\bin\testlink.exe
Арсений
Сообщения: 5
Зарегистрирован: 04 июл 2008, 00:40

Да, дайствительно и у меня запахало. :D В папке bin создался exe файл. Большое спасибо.
Однако остается вопрос, связаннный с файлом библотеки. Может ли повториться сиуация, с отсутствием какой-либо процедуры и в другой библиотеке ? Может ли кто порекомендовать проверенный файлы библиотек, компилятор ? Заранее спасибо за информацию.
Ответить