繁体   English   中英

在 MASM 程序中使用 C function

[英]Use C function in MASM programm

我有 C function,我想在我的 MASM 程序中使用它。

C 文件:

#include <stdio.h>

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

我在 gcc 中使用了这个命令: gcc -c go_func.c在我得到go_func.obj之后

但是,我无法编译/翻译我的 MASM 程序,因为我没有 go function 的地址。 也许我需要创建 dll (静态或动态)?

程序.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

我不能称它为 function,因为我没有指向 function 的指针?

您需要一个用于 function 的PROTO声明,告诉 MASM 使用 C 调用约定。 在这种情况下,这将是C ,但不是NEAR (这是 80 年代过时的 16 位调用约定)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM