我正在Eclipse CDT中做一个Hello World C项目。我做到了 档案 - >新 - > C项目 - >可执行 - >空项目
当我编译它时会给出一个链接错误,我认为这意味着它认为我正在做一个Windows GUI程序,因为它想要winmain @ 16:
CDT Build Console(HelloWorld)
17:54:23 **** Incremental Build of configuration Debug for project HelloWorld ****
Info: Internal Builder is used for build
gcc -o HelloWorld.exe HelloWorld.o
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
17:54:23 Build Finished (took 381ms)
我的问题 - 如果可能的话,如何更改项目的选项,不想要winmain @ 16?
我发现我可以在Project Explorer中右键单击项目名称并从菜单中选择Properties,但我看不到任何可执行类型 - 控制台与GUI。
答案 0 :(得分:0)
首先(最好)猜测:你在编译前保存了你的来源?默认情况下,Eclipse在编译之前不保存缓冲区,您必须在选项中明确说明。您的编译器输出应该提到它实际编译源代码,如下所示:
Info: Internal Builder is used vor build
gcc -O3 -Wall -c -fmessage-length=0 -o main.o "..\\main.c"
gcc -o HelloWorld.exe main.o
您提供的消息不包含该消息,但您可能是在较早的尝试中编译了源代码。
我创建了一个像你一样的空C项目,使用MinGW 4.5.8和gcc的链接器接受两种方式来定义主要功能:
#include <stdio.h>
int main (int argc, char ** argv) { printf("Hello World!\n"); return 0; }
和
#include <stdio.h>
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
printf("Hello World!\n");
return 0;
}
如果这没有帮助,那么Eclipse社区可能会在http://www.eclipse.org/forums/index.php/t/153059或http://www.eclipse.org/forums/index.php/t/67342提到一些能激发你灵感的东西。
类似问题: eclipse + cdt + mingw + windows error "undefined reference to `WinMain@16'" on build, undefined reference to WinMain Error 1 in eclipse using mingw