#assembly #malloc #x86-64 #masm #msvcrt
#сборка #malloc #x86-64 #masm #msvcrt
Вопрос:
Я пытаюсь вызвать malloc в сборке Visual Studio Community 2019, но я продолжаю получать неопределенную ссылку на символ malloc.
mov rcx,10h
call malloc
Не компилируется, поскольку я получаю неопределенную ссылку на malloc
Я даже пробовал это с _malloc с той же проблемой.
Мне не хватает какого-то включения?
Комментарии:
1. Это был бы лучший вопрос, если бы вы указали точное сообщение об ошибке, чтобы было ясно, что оно было от ассемблера, а не во время соединения. (Если вы объявили
extern malloc
, но затем не связались с библиотекой C, вы ожидаете какой-то неопределенной ссылки при связывании после успешной сборки.)
Ответ №1:
Это было решено путем помещения extern в раздел данных
.data
extern malloc: proc
.code
;Some code;
Комментарии:
1. Если это действительно решило вашу проблему, вы должны принять свой ответ!
2. Мне нужно подождать 2 дня
3. О, тогда я виноват. Я забыл, что время ожидания было таким долгим. Неважно.
4. Вы уверены
extern malloc: proc
, что он должен быть.data
включен? Это кажется странным, если только это не создает заполнитель для динамического связывания (указатель для косвенного вызова) в позиции, которую вы объявляете. Я не использую MASM, но в других ассемблерах для других ОС, например, NASM,extern malloc
может быть где угодно и является просто директивой, которая не взаимодействует с текущим разделом.