You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MinGW(gcc/g++)编译依赖wxWidgets的C++文件时出现编译错误求助

使用MinGW(gcc/g++)编译依赖wxWidgets的C++文件时出现编译错误求助

我之前一直用Visual Studio编译C文件,但现在想换成MinGW的gcc/g来编译。不过我对wxWidgets不太熟悉,尝试运行下面的编译命令时遇到了错误:

gcc main.cpp -I C:\wxWidgets-3.2.5\include\msvc -I C:\wxWidgets-3.2.5\include -L C:\wxWidgets-3.2.5\lib\vc_x64_lib -mwindows

错误信息如下:

In file included from C:\wxWidgets-3.2.5\include/wx/platform.h:159:0,
from C:\wxWidgets-3.2.5\include/wx/defs.h:45,
from C:\wxWidgets-3.2.5\include/wx/wx.h:14,
from main.cpp:1:
C:\wxWidgets-3.2.5\include\msvc/wx/setup.h:12:6: error: #error "This file should only be included when using Microsoft Visual C++"
#error "This file should only be included when using Microsoft Visual C++"
^~~~~


别担心,这个错误的原因很明确:你现在用的是专门给Visual Studio准备的wxWidgets头文件和库文件,和MinGW的gcc/g++完全不兼容!下面是具体的解决步骤:

  • 第一步:获取MinGW版本的wxWidgets库
    你当前指定的C:\wxWidgets-3.2.5\lib\vc_x64_lib是VC编译的库,MinGW需要专属的版本。两种方式可以获取:

    1. 手动编译:打开MinGW的命令终端(比如MSYS2的shell,或者单独MinGW自带的命令行),进入wxWidgets的build\msw目录(cd C:\wxWidgets-3.2.5\build\msw),运行编译命令,比如64位Release共享库的编译指令:
      mingw32-make -f makefile.gcc BUILD=release SHARED=1 UNICODE=1 TARGET_CPU=AMD64
      
      如果需要Debug版本,把BUILD=release改成BUILD=debug即可。
    2. 下载预编译包:直接找和你的MinGW位数、编译器版本匹配的预编译wxWidgets包,省去编译的麻烦。
  • 第二步:修正编译命令的路径参数
    把命令里的VC相关路径替换成MinGW对应的路径:

    • 删掉-I C:\wxWidgets-3.2.5\include\msvc这个参数(这就是报错的根源,这个头文件只给VC用)
    • 库路径换成MinGW编译后的目录,比如C:\wxWidgets-3.2.5\lib\gcc_x64_dll(具体名字根据你编译的配置调整)
    • 还要加上对应wxWidgets库的链接参数,比如-lwxmsw32u_core -lwxbase32u(Debug版本要加_d后缀,比如wxmsw32u_core_d)

    举个参考的正确编译命令:

    g++ main.cpp -I C:\wxWidgets-3.2.5\include -L C:\wxWidgets-3.2.5\lib\gcc_x64_dll -lwxmsw32u_core -lwxbase32u -mwindows
    

备注:内容来源于stack exchange,提问作者Udan Jayanith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:49:51