有这么简单的Win32汇编程序
.386
.model flat, c
option casemap :none
;includelib C:UsersDarekDevVCliblibcmt.lib
;includelib C:UsersDarekDevVCliblegacy_stdio_definitions.lib
EXTERN printf :PROC ; declare printf
.data
HelloWorld db "Hello j World!:-)", 0
.code
main PROC
push offset HelloWorld
call printf
add esp, 4
ret
main ENDP
END
我想将入口点名称从标准main
更改为my_start,因此我将主函数的名称更改为my_start
...
my_start PROC
...
my_start ENDP
...
然后像下面一样链接
link /ENTRY:my_start /SUBSYSTEM:CONSOLE HelloWorld.obj libcmt.lib
但是得到链接错误:
未定义在_mainCRTStartup中调用的外部符号_main为什么链接器会选择ENTRY选项?我做错了什么,怎么做才能让它正常工作?
公立小学我使用MSVC 2019
提供的ml
和link
C要求主程序命名为main
。这是C语言强加的限制,而不是硬件本身。我只使用过UASM和x86-16,所以我不熟悉Win32语法,但你可以试试这个:
my_start equ main
(假设Win32有一个equ
指令,即。)