-
-
[求助] c与汇编混合编译时链接出错
-
发表于:
2018-3-14 10:41
2952
-
1.编译c文件
\\ hello.c
#include <stdio.h>
extern int fun();
void main(int argc,char* argv[])
{
int number;
number= fun();
printf("number = %d\n",number);
return ;
}
`
编译成obj目标文件:
cl /c hello.c -o hello.obj
2编译汇编文件
.386
.model flat,stdcall
option casemap:none
fun proto ;
.code
fun proc
mov eax,55
ret
fun endp
end
编译成myfun.obj文件:
ml /c myfun.asm
3 链接文件生成可执行文件
link myfun.obj hello.obj
分析一下文件:
dumpbin /all hello.obj
dumpbin /all myfun.obj
发现asm导出的函数名有问题,但是不知到怎么改,求助!!!
现在已经有一个解决方法(不靠谱!)
用010Edit修改符号,让myfun.obj文件中_fun@0强制修改成_fun.
重新编译
程序成功生成。
但是这个方法不靠谱,我不能没写一个函数就这么干!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2018-3-14 10:59
被fily阳光编辑
,原因: