创建WApplication对象

时间:2016-11-01 15:26:26

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

我的Wt Web应用程序存在问题。这是一个相当简单的应用程序,我不需要在任何外部服务器(只有localhost)上部署它,因此构建在框架提供的whttpd服务器就足以满足我的需求。我在发布模式下创建一个可执行文件(Visual Studio 2015),运行它,当我在浏览器中打开localhost:8080来访问应用程序时,我收到一个错误。在调试模式下,一切都运行良好。

调试控制台显示:

  

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

     

检测到严重错误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服务器时需要的任何内容。有经验的人可以帮助我吗?

编辑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)

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

1 个答案:

答案 0 :(得分:0)

问题解决了。我仍然不能确切地说出原因是什么,但我重新编译了Wt和Boost库并更改了项目属性以匹配Wt示例。我还必须将构建类型从x64更改为x86。它现在有效。