Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C _start()的对应项_C_Linux_Windows - Fatal编程技术网

C _start()的对应项

C _start()的对应项,c,linux,windows,C,Linux,Windows,在linux中,start()是触发main()函数的汇编函数 窗户里有什么? 我不确定我的问题是对还是错 实际上,我正在尝试在Linux中使用_start(),工作正常。 但是在DevC++(windows)中使用相同的代码 [链接器错误]未定义对的引用`WinMain@16" Windows使用函数WinMain()作为入口点,该函数作为以下声明: int CALLBACK WinMain(HINSTANCE hInstance, HINSTANC

linux中,start()
是触发
main()
函数的汇编函数

窗户里有什么? 我不确定我的问题是对还是错

实际上,我正在尝试在Linux中使用_start(),工作正常。 但是在DevC++(windows)中使用相同的代码

[链接器错误]未定义对的引用`WinMain@16"


Windows使用函数WinMain()作为入口点,该函数作为以下声明:

int CALLBACK WinMain(HINSTANCE hInstance, 
                     HINSTANCE hPreviousInstance, 
                     LPSTR lpszCmdLine, 
                     int nCmdShow);
我将尝试向您解释
WinMain()
的基础知识

为了理解这些
HINSTANCE
类型意味着什么,我们必须求助于与文件的类比。当您使用经典的
系统调用(open())
打开文件时,会得到一个称为文件描述符的整数值。但在微软的术语中,这被称为句柄,或英语。大多数Windows API函数都使用句柄,它们是对可以在Windows中使用的对象的引用

句柄与文件描述符完全相同。它们是数值​​除了值本身之外,它们没有特殊意义(例如,它们不是指向对象的指针)

例如:一个进程有一个与其实例相对应的句柄(
HINSTANCE
)。请注意,同一进程可以运行多次(您可以从同一应用程序打开两个窗口,例如,尝试记事本)。因此,正在执行的实例的“句柄”被传递到上面的
hInstance
中的
WinMain
。。。第二个“句柄”,HPPreviousInstance,仅仅是历史的。。。在Win16中,API进程被放置在一个列表中,应用程序的上一个实例的句柄在
hPreviousInstance
中报告。。。在Win32以后的版本中,此参数将始终为NULL(或0)

与获取参数列表不同(与main()函数中的argv数组一样),我们的入口点被提供了一个指向包含命令行的字符串的简单指针。
LPSTR
类型可以理解为“指向字符串的长指针”,即“char*”。。。这里的“长期”一词也是历史性的

第四个参数是Windows发送给应用程序的常量,通知应用程序用户希望如何显示第一个窗口(或者是否最初将隐藏!)。。。通常使用的常数是
SW\u SHOW
。这里有一个解释:Windows头文件定义了符号常量的“刻度”(通用大小度量),其中许多是位图,也就是说,它们可以通过OR运算符“添加”到其他符号常量中


WinMain()
函数将返回一个应为0的整数值或
WM\u QUIT
消息中的值(稍后我将解释)。。。也就是说,该值通常为0,与在DOS中学习到的“
ERRORLEVEL
”无关。。。Windows不处理
ERRORLEVEL

Windows使用函数WinMain()作为入口点,该函数作为以下声明:

int CALLBACK WinMain(HINSTANCE hInstance, 
                     HINSTANCE hPreviousInstance, 
                     LPSTR lpszCmdLine, 
                     int nCmdShow);
我将尝试向您解释
WinMain()
的基础知识

为了理解这些
HINSTANCE
类型意味着什么,我们必须求助于与文件的类比。当您使用经典的
系统调用(open())
打开文件时,会得到一个称为文件描述符的整数值。但在微软的术语中,这被称为句柄,或英语。大多数Windows API函数都使用句柄,它们是对可以在Windows中使用的对象的引用

句柄与文件描述符完全相同。它们是数值​​除了值本身之外,它们没有特殊意义(例如,它们不是指向对象的指针)

例如:一个进程有一个与其实例相对应的句柄(
HINSTANCE
)。请注意,同一进程可以运行多次(您可以从同一应用程序打开两个窗口,例如,尝试记事本)。因此,正在执行的实例的“句柄”被传递到上面的
hInstance
中的
WinMain
。。。第二个“句柄”,HPPreviousInstance,仅仅是历史的。。。在Win16中,API进程被放置在一个列表中,应用程序的上一个实例的句柄在
hPreviousInstance
中报告。。。在Win32以后的版本中,此参数将始终为NULL(或0)

与获取参数列表不同(与main()函数中的argv数组一样),我们的入口点被提供了一个指向包含命令行的字符串的简单指针。
LPSTR
类型可以理解为“指向字符串的长指针”,即“char*”。。。这里的“长期”一词也是历史性的

第四个参数是Windows发送给应用程序的常量,通知应用程序用户希望如何显示第一个窗口(或者是否最初将隐藏!)。。。通常使用的常数是
SW\u SHOW
。这里有一个解释:Windows头文件定义了符号常量的“刻度”(通用大小度量),其中许多是位图,也就是说,它们可以通过OR运算符“添加”到其他符号常量中


WinMain()
函数将返回一个应为0的整数值或
WM\u QUIT
消息中的值(稍后我将解释)。。。也就是说,该值通常为0,与在DOS中学习到的“
ERRORLEVEL
”无关。。。Windows不处理
ERRORLEVEL

这篇MSDN博客文章可能让您感兴趣:一般来说,“真实”入口点是在PE标题中指定的;将其设置为自定义函数的方式取决于所使用的链接器。你在使用什么编译器/链接器?这篇MSDN博客文章可能让你感兴趣:一般来说,“真实”入口点是在PE头中指定的;将其设置为自定义函数的方式取决于所使用的链接器。您使用的编译器/链接器是什么?真正的入口点在库代码中,它检索
WinMain
参数的值,然后调用
WinMain
函数。实际入口点