记录在linux平台使用mingw编译windows exe时遇到的一些问题
提示找不到std:u8string类型
原因是没有指定c++版本, 默认的版本太低
可以添加编译器参数
例如
-std=c++2a
提示找不到Windows.h
原因是大小写问题, 之前使用msvc构建工具时使用的是大写开头, 改成小写开头就可以找到了
提示找不到WC_ERR_INVALID_CHARS和GetQueuedCompletionStatusEx
原因是默认的宏"_WIN32_WINNT"定义的版本小于0x0600, 需要大于等于0x0600时mingw提供的头文件中才会定义相应的函数
解决办法就是手动定义一下宏"_WIN32_WINNT"的值, 让值大于或等于0x0600,
例如
#define _WIN32_WINNT 0x0600
提示undefined reference to `__imp_WSAGetLastError'等
原因是可以被msvc构建工具识别的指令会被忽略
例如下面的指令会无效
#pragma comment(lib,"Ws2_32.lib") #pragma comment(lib,"Wininet.lib")
可以在命令行中添加上需要链接的库名字
例如
x86_64-w64-mingw32-g++ -std=c++2a -static test.cpp -lws2_32 -lwininet -o test.exe
其中"-lws2_32"与"-lwininet"与源代码文件一并输入给编译器
编译出的可执行程序在windows平台运行提示找不到libstdc++-6.dll
添加编译命令"-static",让编译器静态链接所需标准库后可以解决,但编译出的可执行文件占用空间变大
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧