【问题标题】:warning: 'virtual void wxWindowBase::SetInitialBaseSize(const wxSize&)' is deprecated警告:'virtual void wxWindowBase::SetInitialBaseSize(const wxSize&)' 已弃用
【发布时间】:2018-01-04 10:00:17
【问题描述】:

我刚刚解决了在 codeBlocks 中找不到 lwxmwsu31u.a 的 wxWidget 错误,当尝试构建和运行我的第一个 c++ wxwidget 示例时,我收到此警告“警告:'virtual void wxWindowBase::SetInitialBaseSize(const wxSize&)'已弃用”,大约有 245 个警告,我不知道如何解决它们。请帮忙。

【问题讨论】:

  • 我会说您显示的警告非常明显。您尝试使用的功能已弃用,您应该迁移到其他功能。我建议您阅读该函数的文档以了解其内容。至于其余的警告,除非它是相同的(使用已弃用的函数),否则我们无法帮助您,除非您向我们展示它们,以及导致这些警告的 Minimal, Complete, and Verifiable Example

标签: c++ codeblocks wxwidgets


【解决方案1】:

编译器告诉您,您尝试调用的方法不再被库使用。因此编译器无法与它链接。 wxWindow class reference 也没有提及您的函数调用。 相反,请尝试使用

wxWindow::SetInitialSize (const wxSize &size=wxDefaultSize)

您的 245 条警告中的 1 条很可能告诉您改用 SetInitialSize。

【讨论】:

  • 我在哪里改变它,我对此很陌生
  • wxWindow 是 wxWidgets 的一部分,wxWidgets 是一个 GUI 库,可让您创建窗口等。您可以找到更多信息on the wxWidgets website。但显然您还没有自己编写该代码。试试下面 Ripi2 的建议。那么下一个问题是:你使用的是什么版本的GCC,如果低于5.3版本,建议你更新一下,因为它已经很老了(2015)
  • 当然我发现我使用的是GCC 5.1.0,我正在尝试升级到最新的,虽然有点乱,你知道更简单的方法
  • 您也可以降级到旧版本的 wxWidgets,但我不建议这样做。升级 GCC 似乎是要走的路
  • 我想升级,你能帮我知道在windows 10电脑上升级gcc的方法吗?
【解决方案2】:

这是 MinGW GCC 编译器版本 的一个已知问题(与“断言”实现有关)。

一种解决方法是编辑yourWxDir/include/wx/window.h
往下走大约 1740 线,直到你看到

wxDEPRECATED_MSG("use SetInitialSize() instead.") 
void SetBestSize(const wxSize& size); 
wxDEPRECATED_MSG("use SetInitialSize() instead.")
virtual void SetInitialBestSize(const wxSize& size);

将最后两行(第二个 wxDEPRECATED_MSG)替换为

#if !wxCHECK_GCC_VERSION(5, 0)
    wxDEPRECATED_MSG("use SetInitialSize() instead.")
#endif
virtual void SetInitialBestSize(const wxSize& size);

如果您自己构建了 wxWidgets(而不是预先构建的下载),请重新构建它。

如果您使用预编译的标头,请删除 .pch 文件并重新构建您的应用。

【讨论】:

  • 当我尝试您的解决方案时,它可以工作,但警告减少到 233,并且我看到一个窗口显示“运行时错误,此应用程序已请求运行时以不寻常的方式终止请联系申请人的支持团队了解更多信息”
  • 大多数警告如果不是都说“重复部分:.'rdata$_ZTV20wxThreadHelperThread[ZTV20wxThreadHelperThread]' 有...”
  • 我从 wxWidgets 网站下载了 .exe 文件,运行 .exe 文件后,我向 cmd 输入了一些命令,花了几个小时才完成。所以我该怎么做。 iinstallation 后出现一些错误,例如配置错误
  • 关于安装和构建的问题,请写一个新问题,显示你所做的所有步骤和使用的命令行。
  • 对此很抱歉,但我想知道的是,根据我安装的 wxWidgets,我应该在最后两行中执行哪一行
猜你喜欢
  • 1970-01-01
  • 2020-12-06
  • 2015-03-23
  • 2019-07-09
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多