未定义对“WinMain@16”的引用

undefined reference to `WinMain@16

本文关键字:引用 WinMain@16 未定义      更新时间:2023-10-16

我正在尝试将openCV安装到Eclipse C++。我安装了Opencv并添加了路径和库文件,但是我得到了

**** Rebuild of configuration Debug for project test ****
**** Internal Builder is used for build               ****
g++ -IC:opencvbuildinclude -O0 -g3 -Wall -c -fmessage-length=0 -osrcmain.o    ..srcmain.cpp
g++ -LC:opencvbuildx86vc10lib -LC:opencvbuildx86vc11lib -otest.exe srcmain.o -lopencv_core247 -lopencv_core247d -lopencv_highgui247 -lopencv_highgui247d -lopencv_imgproc247 -lopencv_imgproc247d
C:/MinGW/i686-pc-mingw32/lib/libmingw32.a(lib32_libmingw32_a-crt0_c.o):crt0_c.c:(.text+0x3c): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
Build error occurred, build is stopped

我知道这个问题以前有人问过,但在每一个答案中,答案都是"忘记包含main()函数"。但是我有一个main()函数,但我仍然收到此错误。

你知道我该怎么办吗?

链接器可能默认使用"Windows"子系统,这意味着主入口点不是您期望的"主"符号,而是"WinMain"。

可以通过在 g++ 命令行传递以下参数来指定应用程序的子系统:

-Wl,-subsystem,console

(仅供参考,对于"Windows"子系统,您将使用-Wl,-subsystem,windows

您也可以在链接器配置的 Eclipse 项目设置中设置它,我相信。

基本上,顾名思义,"控制台"创建一个基于控制台的应用程序,其默认入口点是主函数,另一个将创建一个Windows GUI应用程序,其默认入口点是WinMain函数。

请试一试:)