Я использую визуальную студию на данный момент. Мне нужно создать приложение win32 и нужно вызвать процедуру из функции C, но я всегда получаю ошибку компиляции:Вызов процедуры MASM32 от .c
Ошибки LNK1120 3 ошибки: 1 неразрешенных внешние
Я сократил все, вплоть до простого основная функция и простой .asm-файл с одной процедурой, и я все равно получаю ту же ошибку сборки (или скорее ссылку). Я в недоумении.
Оба используют соглашение cdecl.
MASM32 код (в отдельном файле .asm):
.MODEL FLAT, C
.DATA
.CODE
PUBLIC memory_address
memory_address PROC
mov eax, DWORD PTR [esp]
ret
memory_address ENDP
END
Он монтирует отлично. Файл .c:
#include <stdlib.h>
#include <malloc.h>
#include <stdio.h>
extern int memory_address(int* ptr);
void main()
{
int *ptr = (int*)malloc(sizeof(int));
memory_address(ptr);
while (1) {}
return;
}
Не знаю, почему это происходит. Я успешно использовал MASM для 64-битного приложения около года или около того без проблем. Но я должен сделать 32-битное приложение, мне не повезло назвать MASM32 proc memory_address().
Я спешу добавить Я знаю, как это сделать в NASM для 32-битных приложений, и я знаю, как это сделать для 64-битных приложений с использованием MASM. Это проблема MASM32. Любые предложения были бы замечательными, но только для MASM32. Благодарю.
Я знаю, что вы хотите получить ответы на MASM32, но, как вы делали это в NASM? Не могли бы вы показать это тоже? Просто отредактируйте свой вопрос, чтобы показать код NASM, который сработал. –
Попробуйте добавить главное подчеркивание к имени процедуры masm? – anatolyg
Кроме того, не упоминается ли имя, которое он пытается найти, прямо перед ошибкой, которую вы цитировали? – anatolyg