【问题标题】:Qt code c000001d in virtual machine虚拟机中的Qt代码c000001d
【发布时间】:2014-10-08 09:09:02
【问题描述】:

我在 Visual Studio 2013 中使用 Qt 创建了一个项目。我通过插件将Qt添加到VS2013中,并开始在Qt Creator中设计一个主窗口。

我的代码如下所示: 主.cpp:

#include "test2.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    test2 w;
    w.show();
    return a.exec();
}

test2.h:

#ifndef TEST2_H
#define TEST2_H

#include <QtWidgets/QMainWindow>
#include "ui_test2.h"

class test2 : public QMainWindow
{
    Q_OBJECT

public:
    test2(QWidget *parent = 0);
    ~test2();

private:
    Ui::test2Class ui;
};

#endif // TEST2_H

test2.cpp:

#include "test2.h"

test2::test2(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
}

test2::~test2()
{

}

在此之后,我构建了解决方案并将其移至虚拟机。

Visual Studio : 64 位发行版

Qt:适用于 64 位 Windows 的 Qt 5.3.2(VS 2013,OpenGL,573 MB)

虚拟机:64 位。

在虚拟机上安装了 Visual C++ Redistributable für Visual Studio 2013。

VmWarePlayer 用于虚拟机。

在另一台普通的 64 位计算机上一切正常。

问题签名:

问题事件名称:APPCRASH

应用程序名称:test2.exe

应用程序版本:0.0.0.0

应用程序时间戳:5434e66b

故障模块名称:MSVCR120.dll

故障模块版本:12.0.21005.1

故障模块时间戳:524f83ff

异常代码:c000001d

异常偏移量:0000000000095c01

操作系统版本:6.1.7600.2.0.0.256.48

区域 ID:1031

附加信息1:6abf

附加信息2:6abf78853a12e8504a5f26d8c231927b

附加信息 3:1f6d

附加信息 4:1f6d0c3c3ab43abf0b4e81f905afc8ea

我的目录如下所示:

【问题讨论】:

  • 为什么不在visual studio调试器下运行它,看看它在哪里崩溃?很可能您没有在某处检查错误代码或返回值,并且尽管出现错误仍在继续。
  • 一台 VM 的设置与其他 VM 略有不同。所以某处发生了故障,您的代码(甚至可能是 Qt)无法正确处理它,从而导致崩溃。这也是一种可能的情况。所以是的,问题的来源在VM本身,但它表现出来是因为代码有错误,只是错误在“正常运行”的系统上被掩盖了。说真的,在调试器下运行它,看看它在哪里崩溃。那应该是你的第一步。总是。我对提问者甚至没有使用调试器的“它崩溃”的问题投了反对票。他们表现出零努力。
  • 我在自己的电脑上尝试了 3 个不同的 vm,还运行了调试器,没有任何帮助,程序甚至没有启动,它什么也没做
  • 嗯,你有源代码吗?你是从源代码编译的吗?它会在调试版本、发布版本或两者中崩溃吗?如果您声称调试器甚至无法在 Visual Studio 下启动程序,那么您的 VM 或运行它的硬件存在问题。运行 memtest86 一天,然后运行 ​​prime95 一天,确保没有错误。

标签: c++ qt


【解决方案1】:

我可能已经找到了我的问题的答案,对我来说它有助于安装虚拟机的所有更新,之后我的程序运行没有任何问题。

【讨论】:

    【解决方案2】:

    某些 VM 具有不正确的高级指令支持。例如:使用 Advanced Vector Extensions (/arch:AVX) 在 MSVC++ 2012/2013 x64 工具集中构建的原生 c++ 应用程序将在 VirtualBox 上CRASHED,异常 C000001d(无效指令代码) .

    您应该将项目属性启用增强指令集设置为“未设置”。只有这样的 x64 项目配置才能在所有 VM 上运行。

    【讨论】:

      猜你喜欢
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 2017-10-23
      相关资源
      最近更新 更多