Используйте функцию C в программе MASM - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть функция C, и я хочу использовать ее в моей программе MASM.

C file:

#include <stdio.h>

int go() {
    printf("Hello\n");
    return 10;
}

Я использовал эту команду в g cc: gcc -c go_func.c После того как я получил go_func.obj

Но я не могу скомпилировать / перевести мою программу MASM, так как у меня там нет адреса функции go. Может быть, мне нужно создать DLL (Stati c или Dynami c)?

prog.asm:

.386p
.model flat, stdcall
; include c:\masm32\include\windows.inc
include c:\masm32\include\user32.inc
include c:\masm32\include\msvcrt.inc
include c:\masm32\include\kernel32.inc

includelib c:\masm32\lib\msvcrt.lib
includelib c:\masm32\lib\user32.lib
includelib c:\masm32\lib\kernel32.lib

extern go@0:NEAR

_data segment dword public use32 'data'

_data ends

_text segment dword public use32 'code'

START:
    call go

_text ends

end START

Я не могу вызвать эту функцию, потому что я не есть указатель на функцию?

1 Ответ

0 голосов
/ 15 апреля 2020

Вы хотите объявление PROTO для вашей функции, которая говорит MASM использовать C соглашение о вызовах. В этом случае это будет C, но не NEAR (что является устаревшим 16-битным соглашением о вызовах из 80-х).

...