Windows下MinGW编译SHA1哈希生成程序报WinMain@16错误如何解决
报错原因
这个是MinGW链接器的入口点查找失败报错,核心原因如下:
- MinGW默认会优先匹配Windows GUI程序的入口函数
WinMain@16,而非控制台程序的标准main函数。出现该报错通常有两个触发场景:- 你仅编译了
sha1.c这一个仅包含SHA1工具实现、不带入口函数的文件,没有将包含main函数的业务代码加入编译流程 - 编译参数配置错误,导致链接器误将目标程序判定为GUI程序,没有去查找
main函数作为入口
- 你仅编译了
解决方案
根据你的实际场景选择对应方案即可:
场景A:要生成可直接运行的SHA1哈希计算程序
将包含main函数的源码和sha1.c一起参与编译,同时可加-mconsole参数强制指定控制台程序属性,编译指令示例:
gcc 你的主函数源码文件.c sha1.c -mconsole -o sha1_calc.exe
另外还要确认你替换u_int32_t为uint32_t的操作配套补上了头文件引用,在sha1.c最顶部添加以下代码避免类型识别错误:
#include <stdint.h>
场景B:仅要编译SHA1的静态库文件供其他程序调用
不需要入口函数,编译时加-c参数仅生成目标文件不执行链接流程即可,编译指令示例:
gcc -c sha1.c -o sha1.o
后续你开发其他程序需要调用SHA1能力时,直接将sha1.o和你的业务代码一起编译即可。
内容的提问来源于stack exchange,提问作者Ferxiss
相关产品推荐
相关产品推荐

