当前位置: 首页 > 编程笔记 >

Mingw64编译wxWidgets 3.0.2常见错误分析

盖翰池
2023-03-14
本文向大家介绍Mingw64编译wxWidgets 3.0.2常见错误分析,包括了Mingw64编译wxWidgets 3.0.2常见错误分析的使用技巧和注意事项,需要的朋友参考一下

使用Mingw64编译wxWidgets3.0.2,首先得下载wxMSW-Setup-3.0.2.exe(https://sourceforge.net/projects/wxwindows/files/3.0.2/wxMSW-Setup-3.0.2.exe,然后按照如下步骤编译(假设要编译一个Unicode共享库版的wxWidgets):

cd X:\wxWidgets-3.0.2\build\msw

    make -f makefile.gcc SHARED=1 UNICODE=1

  然而编译到一半,从C代码变为C++代码时,就会产生如下错误(有许多类似错误,只选取一处):

In file included from e:\mingwd\mingw\include\c++\5.2.0\type_traits:35:0,
                   from ..\..\include/wx/strvararg.h:25,
                   from ..\..\include/wx/string.h:46,
                   from ..\..\include/wx/any.h:19,
                   from ../../src/common/any.cpp:18:
e:\mingwd\mingw\include\c++\5.2.0\bits\c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

  既然只是c++11支持没有打开的问题,只要改一下CXXFLAGS即可,于是乎,按如下命令重新编译。

    make -f makefile.gcc CXXFLAGS="-std=c++11" SHARED=1 UNICODE=1 clean

    make -f makefile.gcc CXXFLAGS="-std=c++11" SHARED=1 UNICODE=1

  这次编译完了所有中间件,但是到链接时候又出了问题:

    E:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_filename.o): In function `wxChmod(wxString const&, unsigned short)':
    E:\wxWidgets-3.0.2\build\msw/../../include/wx/filefn.h:513: undefined reference to `wxMSLU__wchmod(wchar_t const*, int)'
    E:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_filename.o): In function `wxOpen(wxString const&, int, unsigned short)':
    E:\wxWidgets-3.0.2\build\msw/../../include/wx/filefn.h:515: undefined reference to `wxMSLU__wopen(wchar_t const*, int, int)'
    E:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_file.o): In function `wxRemove(wxString const&)':
    E:\wxWidgets-3.0.2\build\msw/../../include/wx/wxcrt.h:758: undefined reference to `wxMSLU__wremove(wchar_t const*)'
    E:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_file.o): In function `wxAccess(wxString const&, unsigned short)':
......

  这实在是令我百思不得其解了,翻遍了docs文件夹的每个角落,终于在install.txt中找到了答案,里面有这么一句话:

C++11 note: If you want to compile wxWidgets in C++11 mode, you currently have
            to use -std=gnu++11 switch as -std=c++11 disables some extensions
            that wxWidgets relies on. I.e. please use CXXFLAGS="-std=gnu++11".

  说的很清楚,不能用”std=c++11"进行编译,这会导致一些wxWidgets依赖的extensions(扩展名?)被屏蔽的问题。然后用以下命令重新编译,就成功了。

    make -f makefile.gcc CXXFLAGS="-std=gnu++11" SHARED=1 UNICODE=1 clean

    make -f makefile.gcc CXXFLAGS="-std=gnu++11" SHARED=1 UNICODE=1

后记

  上面说到关于extensions,这里的意思应该是扩展,即gnu的g++(gcc)提供给c/c++代码除c++标准以外的支持。如果这些支持没有被启用,自然会导致上面像wxWidgets的库编译失败,不过这么依赖语言外的额外实现也不见得是件好事吧。

 类似资料:
  • 下面列出了一些在使用TypeScript语言和编译器过程中常见的容易让人感到困惑的错误信息。 "tsc.exe" exited with error code 1 修复: 检查文件编码,确保为UTF-8 - https://typescript.codeplex.com/workitem/1587 external module XYZ cannot be resolved 修复: 检查模块路径是

  • 本文向大家介绍PHP编译安装时常见错误解决办法,包括了PHP编译安装时常见错误解决办法的使用技巧和注意事项,需要的朋友参考一下 This article is post on https://coderwall.com/p/ggmpfa configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 di

  • 错误 1 Error: Cannot find module 'gh-pages' at Function.Module._resolveFilename (module.js:489:15) at Function.Module._load (module.js:439:25) 上面的报错是:找不到 gh-pages 模块。 解决方法: npm i gh-pages

  • 模板 安装完成后显示模板不存在 原因:数据库连接有错 解决办法: 删除app/Common/dataconfig.php 重新安装 或者 在配置文件里填写正确数据库连接信息

  • 常见错误码 在集成SDK的过程中可能会出现一些错误码的提示,错误码的具体含义请看下面的表格: 初始化(10000) 10001 siteid传空 10002 服务器本地地址获取失败 10003 网络获取服务器地址失败 10004 没有网络 10005 初始化成功 登录(20000) 20001 没有初始化就调用登录 20002 登录的uid为空 20003 uid非法 20004 退出登录失败 2

  • 常见错误码 在集成SDK的过程中可能会出现一些错误码的提示,错误码的具体含义请看下面的表格: 初始化(10000) 10001 siteid传空 10002 服务器本地地址获取失败 10003 GlobalConfig为空 10004 GlobalUtil为空 10005 网络获取服务器地址失败 10006 没有网络 10007 重复登录 10008 初始化成功 登录(20000) 20001 没