如何在一个简单的汇编程序中更改入口点名称?



有这么简单的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提供的mllink

C要求主程序命名为main。这是C语言强加的限制,而不是硬件本身。我只使用过UASM和x86-16,所以我不熟悉Win32语法,但你可以试试这个:

my_start equ main

(假设Win32有一个equ指令,即。)

最新更新