我的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)
所以这是一个内存管理问题。在调试模式下,此管理与发布时的工作方式完全不同,这就是我在调试时没有收到任何错误的原因。不幸的是,我仍然不知道如何解决这个问题。有什么想法吗?
答案 0 :(得分:0)
问题解决了。我仍然不能确切地说出原因是什么,但我重新编译了Wt和Boost库并更改了项目属性以匹配Wt示例。我还必须将构建类型从x64更改为x86。它现在有效。