Я пытаюсь скомпилировать программу C с процедурой ASM. Он должен быть 16-битным, поэтому я использую Visual C++ 1.0 и MASM 6.11.Неразрешенный внешний (старый компилятор)
код ASM:
.MODEL MEDIUM
EXTRN first:WORD, second:WORD, third:WORD
.CODE
_Add_Ext PROC FAR
mov AX, first
add AX, second
mov third, AX
_Add_Ext ENDP
END
Я составил его в .obj файл
ml.exe -c -Cx -FoC:\prjcts\2_6\2_7.obj C:\prjcts\2_6\2_7.asm
и включены в проект.
код C:
#include <stdio.h>
int first = 1, second = 2, third = 0;
void main (void)
{
printf("\nBefore adding third = %d", third);
Add_Ext();
printf("\nAfter adding third = %d", third);
}
Когда я пытаюсь скомпилировать его, он дает мне:
Compiling...
c:\prjcts\2_6\2_6.c
Linking...
C:\PRJCTS\2_6\2_7.OBJ(C:\prjcts\2_6\2_7.asm) : error L2029: 'first' : unresolved external
C:\PRJCTS\2_6\2_7.OBJ(C:\prjcts\2_6\2_7.asm) : error L2029: 'third' : unresolved external
C:\PRJCTS\2_6\2_7.OBJ(C:\prjcts\2_6\2_7.asm) : error L2029: 'second' : unresolved external
LINK returned error code 2.
Creating browser database...
2_6.EXE - 3 error(s), 0 warning(s)
Так что видит мой .obj
, понимает, что это такое, но не могу понять чтобы взять переменные из C-кода? Я не хочу использовать встроенный ассемблер, но я попробовал его раньше, и он сработал.
Unrelated к вашей проблеме, но при написании вопроса здесь, который включает в себя код, пожалуйста, не * перепечатывать * код, поскольку это может ввести несвязанные ошибки, которые отвлекают от вашей реальной проблемы (что произошло для вас сейчас). Вместо этого скопируйте и вставьте код. –
Почему? Я не повторил этого, я слишком ленив. –
Я исправил ваш вопрос Антона, но я считаю, что @JoachimPileborg имел в виду тот факт, что у вас был 'third =% d '' с помощью smartquote (фигурная цитата) вместо традиционной двойной кавычки '' '. У меня было чувство, что каким-то образом предоставленный код был частично отредактирован вручную, поскольку присутствовала только одна такая умная цитата. Поскольку вы не утверждали, что ваш код не будет компилироваться, я изменил ваш код, установив цитату. –