【发布时间】:2014-05-26 08:41:23
【问题描述】:
我最近一直在从 Qt 4.8.5 迁移到 Qt 5.3.0,这些是相关信息:
- Windows 7 32 位
- Qt 3.1.1
- MSVC 2010编译器(我的两个Qt版本都是MSVC2010版的预编译包)
- 来自 Win7 SDK 的调试器
现在我被一个问题困住了,我不断收到编译错误:
致命错误 C1083:无法打开包含文件
来自子目录中的那些头文件,例如,#include "FooFolder/bar.h"。
编译器无法找到所有此类标头,我完全糊涂了,因为:
- Intellisense 运行良好。
- 如果我改回旧套件 Qt 4.8.5,它可以正常编译
- 两个套件都使用相同的 MSVC 编译器。
这是我的.pro 文件:
QT += core gui script
QT += printsupport
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = MyApp
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
qcustomplot.cpp \
dialogs/filterdialog.cpp \
databox/databox.cpp \
databox/datom.cpp \
#... and more FooFolder/bar.cpp
HEADERS += mainwindow.h \
qcustomplot.h \
dialogs/filterdialog.h \
databox/databox.h \
databox/datom.h \
#... and more FooFolder/bar.h
RESOURCES += \
resources.qrc
win32: LIBS += -LC:/ADLINK/UDASK/lib/ -lusb-dask \
INCLUDEPATH += C:/ADLINK/UDASK/include \
DEPENDPATH += C:/ADLINK/UDASK/include \
include(qext/qextserialport.pri)
这是.h 文件之一,该文件包含其他子目录标题
#ifndef SETWINDOW_H
#define SETWINDOW_H
#include <QObject>
#include "databox/databox.h" // <---fatal error C1083: Cannot open include file
class SetWindow: public QObject
{
Q_OBJECT
public:
SetWindow();
public Q_SLOTS:
void setPointNum(int n);
void setStepSize(int s);
int getPointNum();
int getStepSize();
void requestSignal();
Q_SIGNALS:
void sendParameters(int p, int s);
private:
QString DynamicString;
DataBox *presentData;
int m_PointNum;
int m_StepSize;
};
#endif // SETWINDOW_H
并且头文件被包含失败:
#ifndef DATABOX_H
#define DATABOX_H
#include <QVector>
#include <QFile>
#include <QMap>
#include <QString>
#include "datom.h"
class Measurement
{
public:
Measurement();
void setNumChan(int n);
void setADRange(QString &s);
void setSamplingRate(int n);
void setTimeBase(double d);
int NumChan;
QString ADRange;
int SamplingRate;
double TimeBase;
};
class DataBox
{
public:
DataBox();
void setCurrentFile(QString path);
void loadData();
void cleanAll();
QVector<double>* py_0;
QVector<double>* py_1;
QVector<double>* ptimeStamp;
QVector<double>* pi_M;
QVector<double>* py_M;
QVector<double>* py_W;
QMap<double, double> AI_0;
QMap<double, double> AI_1;
QMap<int, double> AI0;
QMap<int, double> AI1;
double timeBase;
Measurement parameters;
QVector<Datom> *dataPoints;
private:
QString currentFile;
};
#endif // DATABOX_H
【问题讨论】:
-
向我们展示代码!此外,您遗漏了错误消息中最重要的部分,即实际未找到的后续部分。
-
@LaszloPapp 什么样的代码?
.pro文件? -
以及发生错误的源文件。另外,不要截断错误消息。照原样粘贴。 ;) 顺便说一句,
#include FooFolder/bar.h在语法上是错误的。您需要"..."或<...>。另外,以后尽量从qextserialport迁移到qtserialport。 :) -
@LaszloPapp 哎呀,那个语法错误是我的错字,sry。
标签: c++ visual-studio-2010 qt qt-creator qmake