最近使用eclipse新建立了一个工程,编译环境为cygwin-1.7。奇怪的是,在编译程序时总是出现问题:undefined reference to `_WinMain@16’。仔细检查了工程的各项配置,编译问题依旧。
在网上搜索,也找不到相应的问题解决方法。冷静下来,仔细分析问题所在。
在cygwin中编译链接一个程序时,出现了如下错误:
Building target: brcmAdapter.exe
Invoking: Cygwin C Linker
gcc -L”D:\work_new\src\03_broadcom\brcmAdapter\source\brcmAdapter\unitTest\lib” -o “brcmAdapter.exe” ./src/common/brcmAdapterMutex.o ./src/brcmAdapterMemMgr/brcmAdapterMemMgr.o ./src/brcmAdapterAlloctor/brcmAdapterAlloctor.o ./src/brcmAdapterAlloctor/brcmAdapterMsgQue.o ./src/brcmAdapter.o -lgtest -lgcov
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../libcygwin.a(libcmain.o): In function `main’:
/home/corinna/src/cygwin/cygwin-1.7.15/cygwin-1.7.15-1/src/cygwin-1.7.15/winsup/cygwin/lib/libcmain.c:39: undefined reference to `_WinMain@16′
collect2: ld returned 1 exit status
make: *** [brcmAdapter.exe] Error 1
**** Build Finished ****
即未定义:undefined reference to `_WinMain@16′
尝试把Elf Parser勾选上,如下图所示,问题依旧。
在冥思苦想之际,忽然发现了这个问题所在,也就是下面的解决方法。
解决办法
原来,在创建eclipse工程时,建立的是C工程。但工程中单元测试的库gtest却是C++的。所以必须创建C++的工程。