【发布时间】:2020-07-27 05:29:48
【问题描述】:
我有 C 函数,我想在我的 MASM 程序中使用它。
C 文件:
#include <stdio.h>
int go() {
printf("Hello\n");
return 10;
}
我在 gcc 中使用了这个命令:gcc -c go_func.c
在我得到go_func.obj
但是,我无法编译/翻译我的 MASM 程序,因为那里没有 go 函数的地址。也许我需要创建 dll(静态或动态)?
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
我不能调用那个函数,因为我没有指向函数的指针?
【问题讨论】:
-
你不需要它。链接器负责处理它。当您有两个不同的 C 文件并从 file1.c 调用 file2.c 中的函数时,情况完全相同。
-
好的,但为什么我会收到此消息?
prog.asm(24) : error A2006: undefined symbol : go -
这是属于问题的关键信息。请edit您的问题并将所有相关信息放在那里。
-
完全不确定,试试
extern go:NEAR
标签: c include call masm extern