Qt:重命名变量崩溃了GUI

时间:2016-10-08 23:09:45

标签: c++ qt user-interface visual-studio-2015

在我无意中重命名了一个数组之后,我以前工作的解决方案仍在编译和链接,但是在绘制Qt GUI的帧之后,生成的二进制文件(无论是调试还是发布)现在崩溃了。

即重命名:

Mat map_x[NUM_PROJS];

为:

Mat mapX[NUM_PROJS];

...导致生成的二进制文件崩溃。

正如您可能猜到的,该阵列与GUI无关。实际上,此声明是解决方案中唯一提及此变量的内容。

我正在使用Qt VS Add-In和Qt Creator在Visual Studio 2015中编译我的C ++代码来编辑用户界面。

我认为VS没有更新相关源文件的.moc,但我确认“重建”正在查看文件的日期戳(见下文)。

按照@ JeremyFriesner的建议,在调试器中我确认数组在堆上并且有大量的标志,如图所示:

map_x 0x00007ff687d559c0 {{flags=1124007936 dims=0 rows=0 ...}, {flags=1124007936 dims=0 rows=0 ...}, {flags=...}, ...} cv::Mat[9]

相同的'map_y'声明在堆上显示0个标志:

map_y   0x00007ff687d54ba0 {{flags=0 dims=0 rows=0 ...}, {flags=0 dims=0 rows=0 ...}, {flags=0 dims=0 rows=0 ...}, ...} cv::Mat[9]

在VS2015'Qt VS Tools'Add In的.pro文件输出上手动运行QMake,并在Qt Creator中重新编译后,问题暂时消失,然后在另一个清理/构建周期后重新置位。

这听起来对任何人都很熟悉吗?

VS构建输出如下:

------ Rebuild All started: Project: imageSlice_Qt, Configuration: Debug x64 ------
1>  Moc'ing imageSlice_Qt.h...
1>  Uic'ing imageSlice_Qt.ui...
1>  Moc'ing customSpinBox.h...
1>  Rcc'ing imageSlice_Qt.qrc...
1>  customSpinBox.cpp
1>  moc_customSpinBox.cpp
1>  moc_imageSlice_Qt.cpp
1>  imageSlice_Qt.cpp
1>  main.cpp
1>  utilities.cpp
1>  Generating Code...
1>  qrc_imageSlice_Qt.cpp

0 个答案:

没有答案