C编程未定义参考`WinMain @ 16'

时间:2016-02-21 08:50:26

标签: c windows

我尝试使用带有记事本的gcc(tdm-1)4.7.1和Windows 10上的命令提示符来编译以下代码。之前将bin文件夹路径添加到全局变量,但是当我尝试编译时我得到跟随错误"未定义引用`WinMain @ 16'"。但是,相同的代码可以正常使用代码块!。

PS:我这样编译它" cd / d代码路径然后是gcc filename.c"

setSession

3 个答案:

答案 0 :(得分:2)

这很奇怪。

gcc --version
  

gcc.exe(tdm64-1)5.1.0      版权所有(C)2015 Free Software Foundation,Inc。      这是免费软件;查看复制条件的来源。没有      保证;甚至不适用于适销性或特定用途的适用性

我没有任何选择

gcc filename.c
a.exe
  

Hello world

但请注意

gcc -municode filename.c

生成链接器错误

  

D:/bin-win64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_w.o):在函数wmain中:   C:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crt0_w.c:23:对wWinMain的未定义引用   collect2.exe:错误:ld返回1退出状态

MinGW中的启动功能是mainCRTStartup,它调用main。如果没有用户指定main,则运行时为您提供一个,即一个调用WinMain

所以你的应用程序也应该从命令行编译。

答案 1 :(得分:2)

我意外地发现了什么错误。通过记事本编写代码之后,我忘了保存文件ctrl + s所以我只是想编译空文件。

答案 2 :(得分:1)

这是我解释为什么我收到此错误以及如何修复它的原因。我认为,在所有情况下,最重要的是你缺少主要的定义,正如其他人已经说过的那样。

http://beginningprogrammer.com/programming/undefined-reference-to-winmain16/