导读:
我用汇编1.asm:
extrn _o:near
data segment
data ends
code segment
main proc far
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
call _o
ret
main endp
code ends
end start
调用o.c:
#include
o()
{
printf("aaa");
}
extern void main();
两个文件分别编译为obj文件:
tcc -c -Iz:/tc/include o.c
masm 1
然后连接
tlink 1.obj o.obj
总会报错“Undefined symbol '_PRINTF' in module O.C
为何?如何解决阿?
文件改为:
1.asm:
extrn _o:near
public _main
data segment
data ends
code segment
_main proc far
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
call _o
ret
_main endp
code ends
end start
o.c:
#include "stdarg.h"
#include "stdio.h"
o()
{
printf("%s","aaaaa");
}
extern void main();
拷贝stdarg.h、stdio.h拷到tc根目录下,masm、tcc也在这个目录
编译通过
但是一执行生成的exe,dos就死机了
本文转自
http://topic.youkuaiyun.com/t/20060904/10/4996403.html
我用汇编1.asm:
extrn _o:near
data segment
data ends
code segment
main proc far
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
call _o
ret
main endp
code ends
end start
调用o.c:
#include
o()
{
printf("aaa");
}
extern void main();
两个文件分别编译为obj文件:
tcc -c -Iz:/tc/include o.c
masm 1
然后连接
tlink 1.obj o.obj
总会报错“Undefined symbol '_PRINTF' in module O.C
为何?如何解决阿?
文件改为:
1.asm:
extrn _o:near
public _main
data segment
data ends
code segment
_main proc far
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
call _o
ret
_main endp
code ends
end start
o.c:
#include "stdarg.h"
#include "stdio.h"
o()
{
printf("%s","aaaaa");
}
extern void main();
拷贝stdarg.h、stdio.h拷到tc根目录下,masm、tcc也在这个目录
编译通过
但是一执行生成的exe,dos就死机了
本文转自
http://topic.youkuaiyun.com/t/20060904/10/4996403.html
本文探讨了使用汇编语言与C语言进行混合编程时遇到的问题及解决方案。具体包括汇编语言如何正确调用C语言函数、外部符号未定义错误的解决办法以及不同编译环境下代码实现的具体细节。

被折叠的 条评论
为什么被折叠?



