Я думаю, что статья объясняет это лучше, чем я.
Грубо говоря, ассемблер не может найти символ (функцию) в go.asm
. Вы должны сказать ему, что это внешний символ.
Связанная статья подходит для создания приложения со смешанным кодом с точки зрения использования ассемблера в качестве основного языка, включая выполнение подпрограммы main
. Если вы используете основную подпрограмму C
, большая часть того, что сделано, не требуется, вам просто нужно:
Соберите модуль сборки с / Mx
сохранить случай нелокальной
имена. При использовании MASM версии 6.0 или
позже используйте / Cx, чтобы сохранить регистр
нелокальные имена.
и
Включите оператор .MODEL, c в модуль сборки, чтобы
убедитесь, что C именование и вызов
конвенции используются и что
модули используют одни и те же сегменты по умолчанию.
Будет маленький, средний,
компактный или большой.
Директивы
и EXTERN
для каждой функции, которую вы хотите вызвать в формате: EXTERN printf:proc
.