汇编之两个文件的链接

本文详细记录了解决汇编语言中两个文件链接过程中遇到的各种问题及解决方法,包括错误LNK2005、LNK2001、LNK1169等,探讨了public、extrn、proto的使用,以及如何处理include、lib库的编译和链接问题。
摘要由CSDN通过智能技术生成

伤不起啊伤不起,恶心了两天了,网上教程几乎也没有,真的是。。。
好了,首先看一下main.asm的代码:

include \masm32\include\masm32rt.inc
    .data?
      value dd ?
    .data
      item dd 0
    .code
start:
    call main
    inkey
    exit
main proc
    cls
    print "Hello World",13,10
    ret
main endp
end start

平淡无奇的代码,而且是教程代码,没道理出错,.386也没有也不知道它是默认谁的,编译了一下,能行,出来helloworld了
然后写一个sub.asm,然后link进去,代码同上
出现问题了:
sub.obj : error LNK2005: _start already defined in main.obj
sub.obj : error LNK2005: _main@0 already defined in main.obj
main.exe : fatal error LNK1169: one or more multiply defined symbols found
解决方法是:把sub.asm的start去掉,把main改成subproc,重新编译
好,现在仍然能够成功运行出helloworld
然后,给sub.asm里添加上一个public
好,同样可以,然后再在main.asm里添加上extrn
出现错误:
main.obj : error LNK2001: unresolved

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值