c++ - QtCreator 中的 "Fatal Error C1083: Cannot open include file"

标签 c++ windows compiler-errors qt-creator

所以我正在 QtCreator 中开发一个 C++ 项目,它一直运行良好。该项目包括一些外部库,例如 DDS 解决方案,还包括一个名为“SimConnect”的库。我之前在图书馆工作过,一切正常,但突然间我无法再编译我的项目了。

我正在使用带有 MSVC13 32 位编译器的 Qt5.6.0。

C:\dev\simNET\application\P3DHook.h:13: Fehler: C1083: Cannot open include file: 'SimConnect.h': No such file or directory

我知道这是一个编译器问题,所以我重新检查了 .pro 文件,看它是否正确地向该库添加了包含和 lib 路径。在我看来这看起来不错(是的,SimConnect.h 文件实际上在指定的路径中,我也尝试给它一个绝对路径,但这也没有解决问题):

win32: LIBS += -L$$PWD/'../../_programme/P3Dv3_SDK/Utilities/SimConnect SDK/lib/' -lSimConnect

INCLUDEPATH += $$PWD/'../../_programme/P3Dv3_SDK/Utilities/SimConnect SDK/Inc'
DEPENDPATH += $$PWD/'../../_programme/P3Dv3_SDK/Utilities/SimConnect SDK/Inc'

win32:!win32-g++: PRE_TARGETDEPS += $$PWD/'../../_programme/P3Dv3_SDK/Utilities/SimConnect SDK/lib/SimConnect.lib'
else:win32-g++: PRE_TARGETDEPS += $$PWD/'../../_programme/P3Dv3_SDK/Utilities/SimConnect SDK/lib/libSimConnect.a'

我还尝试手动重新运行 qmake 并且我删除了整个构建文件夹,清理了项目并尝试重建它。同样的错误。

所以接下来我查看了编译控制台,发现了错误发生的部分:

DNDEBUG -I..\..\..\simNET\plugins\CreatorPlugin -I. -I..\..\..\simNET\application -I..\..\..\_programme\FastRTPS1.5\include -I..\..\..\..\Qt\5.6\msvc2013\include -I..\..\..\..\Qt\5.6\msvc2013\include\QtWidgets -I..\..\..\..\Qt\5.6\msvc2013\include\QtGui -I..\..\..\..\Qt\5.6\msvc2013\include\QtANGLE -I..\..\..\..\Qt\5.6\msvc2013\include\QtCore -Irelease -I..\..\..\..\Qt\5.6\msvc2013\mkspecs\win32-msvc2013 -Forelease\ @C:\Users\crolk\AppData\Local\Temp\CreatorPluginPublisher.obj.2256.47.jom
CreatorPluginPublisher.cpp
    C:\Qt\5.6\msvc2013\bin\moc.exe -DUNICODE -DWIN32 -DQT_NO_DEBUG -DQT_PLUGIN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -D_MSC_VER=1800 -D_WIN32 -IC:/Qt/5.6/msvc2013/mkspecs/win32-msvc2013 -IC:/dev/simNET/plugins/CreatorPlugin -IC:/dev/simNET/application -IC:/dev/_programme/FastRTPS1.5/include -IC:/Qt/5.6/msvc2013/include -IC:/Qt/5.6/msvc2013/include/QtWidgets -IC:/Qt/5.6/msvc2013/include/QtGui -IC:/Qt/5.6/msvc2013/include/QtANGLE -IC:/Qt/5.6/msvc2013/include/QtCore -I. ..\..\..\simNET\plugins\CreatorPlugin\CreatorPluginPublisher.h -o release\moc_CreatorPluginPublisher.cpp
..\..\..\simNET\application\P3DHook.h(13) : fatal error C1083: Cannot open include file: 'SimConnect.h': No such file or directory

看起来它添加了其他包含路径(例如我的 DDS 库的路径)但它根本不会添加 SimConnect 路径,无论我多久重新运行一次 qmake。

有人知道问题出在哪里吗?

编辑: 我注意到构建实际上什至没有失败。它成功构建了我的项目并创建了可执行文件。出于某种原因,QtCreator 仍会认为构建失败并向我显示该错误。在没有 QtCreator 的情况下手动运行我的可执行文件工作正常...

最佳答案

解决方案如下:

我的应用程序由 3 个子项目组成:主图形用户界面应用程序 + 2 个插件,其中包括一些主要图形用户界面的源代码。现在错误发生在主应用程序的源代码中,但恰好该源代码恰好包含在其中一个插件中。在那个插件 .pro 文件中,没有给出外部 SimConnect 库的路径,这就是问题所在。

所以...如果您包含另一个项目的源代码,请确保还包含该子项目所需的所有依赖项。因为否则可能会导致错误消息被误解。

关于c++ - QtCreator 中的 "Fatal Error C1083: Cannot open include file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57618371/

相关文章:

C++/QT - QFileDialog::getOpenFileName 过滤器 *.xml 禁用名称中包含日文字符的文件

c++ - ASIO 客户端服务器在同一台 PC 上连接正常,但在本地网络上失败

c - 低级控制台输入和重定向

windows - 在 Windows 中 merge 为 gitk 中的 diff 工具

c++ - 'ofstream' 和 'fstream' 读取文件

C++程序将链表从位置m反转到n

windows - 如何从服务器正确识别 IE10 Metro 和 IE10 Desktop 以便发回 "finger friendly"或 "mouse friendly"接口(interface)?

compiler-errors - 编译器错误信息 CS1002 : ; expected

compiler-errors - 转让所有权(Genie/Vala)

c# - 为什么 C# 编译器不会在静态方法调用实例方法的地方出现错误代码?