【问题标题】:Wt c++ critical error when creating WApplication object创建 WApplication 对象时出现 Wt c++ 严重错误
【发布时间】:2017-03-14 18:38:07
【问题描述】:

我的 Wt Web 应用程序有问题。这是一个相当简单的应用程序,我不需要将它部署在任何外部服务器(仅本地主机)上,因此框架提供的内置 whttpd 服务器足以满足我的需求。我在发布模式(Visual Studio 2015)下创建了一个可执行文件,运行它,当我在浏览器中打开 localhost:8080 访问应用程序时,出现错误。但是在调试模式下一切正常。

调试控制台显示:

在 0x00007FFB08477788 处抛出异常 Neural_network_visualisation.exe:Microsoft C++ 异常: 内存位置 0x00000025E30FB408 处的 std::runtime_error。

检测到严重错误 c0000374

Neural_network_visualisation.exe 已触发断点。

main.cpp

#include "MyApplication.h"
#include "MyContainerWidget.h"

WApplication *createApplication(const WEnvironment& env) //exception is thrown here
{
    Wt::WApplication *app = new Wt::WApplication(env); //error c0000374
    app->setCssTheme("polished");
    new MyContainerWidget(app->root());

    return app;
}

int main(int argc, char **argv)
{
    return WRun(argc, argv, &createApplication);
}

刚进入createApplication函数就抛出异常,但程序并没有崩溃。执行第一行后显示严重错误并且应用程序停止。

代码很简单,我看不出有什么问题。我的猜测是发布模式需要一些特殊的配置才能与 Wt 一起使用,但官方文档没有提到使用内置 http 服务器时还需要​​什么。有 Wt 经验的人可以帮我解决这个问题吗?

编辑 1:

我更改了代码,如下所示:

#include "MyApplication.h"
#include "MyContainerWidget.h"

WApplication *createApplication(const WEnvironment& env)
{
    //Wt::WApplication *app = 
//  app->setCssTheme("polished");
    //new MyContainerWidget(app->root());

    return new Wt::WApplication(env);;
}

int main(int argc, char **argv)
{
    return WRun(argc, argv, &createApplication);
}

现在错误有所不同,并指出:

HEAP[Neural_network_visualisation.exe]:指定的地址无效 RtlValidateHeap(000002A04F550000, 000002A05117F060)

所以这是一个内存管理问题。在调试模式下,此管理的工作方式与发布时完全不同,这就是为什么我在调试时没有收到任何错误。不幸的是,我仍然不知道如何解决这个问题。有什么想法吗?

【问题讨论】:

  • c0000374STATUS_HEAP_CORRUPTION。可能是双重释放或释放到错误的堆?
  • 问题是,Wt框架应该是内置内存管理的,不需要手动释放内存。再一次,在调试模式下,这段代码可以完美运行。问题仅出现在发行版中。
  • 你试过在调试器中运行它吗?
  • 是的,它可以完美运行。仅当我运行在发布模式下创建的 .exe 文件时才会弹出错误。
  • 你试过在调试器中运行 release 版本吗?

标签: c++ visual-studio-2015 wt


【解决方案1】:

问题解决了。我仍然无法准确说出原因,但我重新编译了 Wt 和 Boost 库并更改了项目属性以匹配 Wt 示例。我还必须将构建类型从 x64 更改为 x86。现在可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 2014-08-24
    • 2022-01-21
    • 2016-01-07
    • 1970-01-01
    相关资源
    最近更新 更多