18135437048 发表于 2022-4-14 11:14:14

win32HelloWorld vc6.0 link2001 error

LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
test.exe : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'd:\masm32\bin\Link.EXE' : return code '0x460'
Stop.

zzxhh628 发表于 2022-4-14 12:29:35

链接错误,估计是子系统的问题,报错入口函数不对。你检查下子系统,设置为控制台子系统。还有尽量别用VC6.0了,那个太老了,有些新标准可能不支持。

18135437048 发表于 2022-4-14 12:36:04

zzxhh628 发表于 2022-4-14 12:29
链接错误,估计是子系统的问题,报错入口函数不对。你检查下子系统,设置为控制台子系统。还有尽量别用VC6. ...

D:\masm32\workspace>link16 /subsystem:console test.obj;

Microsoft (R) Segmented Executable LinkerVersion 5.60.339 Dec5 1994
Copyright (C) Microsoft Corp 1984-1993.All rights reserved.

LINK : warning L4017: /subsystem : unrecognized option name; option ignored
test.obj : fatal error L1101: invalid object module
Object file offset: 1 Record type: 4c

zzxhh628 发表于 2022-4-14 12:41:45

你是写32位汇编?可能你需要指定入口点,不然没法链接。别用link16.exe,有没有link.exe?

zzxhh628 发表于 2022-4-14 12:42:57

你写32位汇编?这个可能需要你自己指定入口点,为什么用link16.exe,有没有link.exe?

18135437048 发表于 2022-4-14 12:58:32

zzxhh628 发表于 2022-4-14 12:42
你写32位汇编?这个可能需要你自己指定入口点,为什么用link16.exe,有没有link.exe?

D:\masm32\workspace>link /subsystem:console test.obj
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

LINK : error LNK2001: unresolved external symbol _mainCRTStartup
test.exe : fatal error LNK1120: 1 unresolved externals

18135437048 发表于 2022-4-14 13:00:22

18135437048 发表于 2022-4-14 12:58
D:\masm32\workspace>link /subsystem:console test.obj
Microsoft (R) Incremental Linker Version 5.1 ...

18135438048哥,你加我给我解决一下吧,百度让用vs2017

zzxhh628 发表于 2022-4-14 13:02:47

ml /c /coff test.asm
Link /SUBSYSTEM:CONSOLE test.obj
这是编译链接过程,你再编译链接一次试试。不知道你的代码是什么,可能你的代码有问题,估计入口点不正确。

zzxhh628 发表于 2022-4-14 13:05:39

ml /c /coff test.asm
Link /SUBSYSTEM:CONSOLE test.obj
这是编译和链接的命令,你是这么编译的吧?

zzxhh628 发表于 2022-4-14 13:06:28

ml /c /coff test.asm
Link /SUBSYSTEM:CONSOLE test.obj
你是这么编译的嘛?

zzxhh628 发表于 2022-4-14 13:08:07

18135437048 发表于 2022-4-14 13:00
18135438048哥,你加我给我解决一下吧,百度让用vs2017

不一定要用VS2017,你把代码发过来,估计入口点有问题。

zzxhh628 发表于 2022-4-14 13:11:58

18135437048 发表于 2022-4-14 13:00
18135438048哥,你加我给我解决一下吧,百度让用vs2017

这个是什么号?

18135437048 发表于 2022-4-14 15:03:46

zzxhh628 发表于 2022-4-14 13:11
这个是什么号?

ok.386
.model flat,stdcall
option casemap:none

include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib



.data
szCaption db 'Welcome to Fishc.com!',0
szText db 'Hello World!',0

.code
start:
        invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
        invoke ExitProcess,NULL
end

18135437048 发表于 2022-4-14 15:08:14

18135437048 发表于 2022-4-14 15:03
ok

对,
ml /c /coff test.asm
link /subsystem:windows test.obj

link /subsystem:console test.obj

link16 /subsystem:console test.obj

nmake
NAME = test
OBJS = $(NAME).obj
RES= $(NAME).res

LINK_FLAG = /subsystem:windows
ML_FLAG = /c /coff

$(NAME).exe: $(OBJS) $(RES)
      Link $(LINK_FLAG) $(OBJS) $(RES)

.asm.obj:
      ml $(ML_FLAG) $<
.rc.res:
      rc $<

clean:
      del *.obj
      del *.res

zzxhh628 发表于 2022-4-14 15:09:51

end后面少个标号start。

zzxhh628 发表于 2022-4-14 15:22:02

这个对于窗口程序子系统就用windows,对于控制台就用console。

18135437048 发表于 2022-4-14 15:22:17

我找到问题了,少个start
end start
不作死就用不了一上午,细节啊

zzxhh628 发表于 2022-4-14 15:23:33

一般用不到link16吧,应该直接link就行。
页: [1]
查看完整版本: win32HelloWorld vc6.0 link2001 error