【问题标题】:QtCreator Cannot open include file (Windows)QtCreator 无法打开包含文件(Windows)
【发布时间】:2013-12-25 02:11:44
【问题描述】:

我正在尝试在 windows 上编译一个开源项目:https://github.com/francisengelmann/FabScan100

我正在使用 QtCreator 2.7.0、Qt Qt5.0.2 msvc2010_opengl、MSVC2010

我的目录如下所示:

C:\
C:\libs\opencv-2.4.2\
C:\libs\pcl-1.6.0
C:\libs\Qt\Qt5.0.2
C:\fabscan\FabScan100-master

我修改了 qtTest.pro 文件以包含必要的头文件和库:

INCLUDEPATH += C:\libs\pcl-1.6.0\3rdParty\Eigen\include
LIBS += C:\libs\pcl-1.6.0\3rdParty\Eigen\bin

INCLUDEPATH += C:\libs\pcl-1.6.0\3rdParty\FLANN\include\flann
LIBS += C:\libs\pcl-1.6.0\3rdParty\FLANN\lib

INCLUDEPATH += C:\libs\pcl-1.6.0\3rdParty\Boost\include\boost
LIBS += C:\libs\pcl-1.6.0\3rdParty\Boost\lib

INCLUDEPATH += C:\libs\opencv-2.4.2\opencv\build\include
LIBS += C:\libs\opencv-2.4.2\opencv\build\x86\vc10\lib


INCLUDEPATH += C:\libs\pcl-1.6.0\include\pcl-1.6
LIBS += C:\libs\pcl-1.6.0\lib \
-lpcl_common \
-lpcl_io \
-lpcl_filters \
-lpcl_kdtree \
-lpcl_registration \
-lpcl_features \
-lpcl_segmentation \
-lpcl_surface \
-lpcl_search

但是当我按下编译按钮时,QtCreator 会抛出一个错误:

..\qtTest\staticHeaders.h(4) : fatal error C1083: Cannot open include file: 'Eigen/Core': No such file or directory

这有点奇怪,因为文件确实在那里。我还可以通过按 STRG 并单击 staticHeaders.h 中的 include 语句在 QtCreator 中打开它

有什么想法吗?

【问题讨论】:

  • 您是否将 Eigen 库路径放入 LIBS 或它的父级?请注意,代码尝试包含 Engine_/Core,而不是 Core。如果您只包含 _Eigen 而不是它的父级,它将不起作用。你能确定吗?
  • INCLUDE 目录 (C:\libs\eigen-3.0.5\include) 中的 @LaszloPapp 是一个目录“Eigen”,其中包含文件“Core”(没有扩展名)。我想那可以吗?但是在 LIBS 目录 (C:\libs\eigen-3.0.5\bin) 中只有两个 DLL 文件 (msvcp100.dll & msvcr100.dll) - 不像其他 LIB 目录那样 *.lib 文件:-/跨度>
  • 基于 staticHeaders.h 代码(第 4 行),您需要有一个名为“Eigen”的文件夹,其中包含“Core”文件。您是否在 eigen lib parent 的某个地方有一个类似这样的文件夹?例如,我在 Linux 上有这个:/usr/include/eigen2/Eigen/Core 在这种情况下,必须使用 qmake 将 /usr/include/eigen2 添加到 LIB 变量中。你在“C:\libs\pcl-1.6.0\3rdParty\Eigen\include”中有一个“Eigen”文件夹吗?
  • 好的。打我傻逼。我想保存 *.pro 文件并按下构建是我所要做的。最近发现了这个神奇的“执行 qmake”按钮。据我了解,在 *.pro 文件中进行更改后,我必须单击该按钮来重新创建 make 文件
  • Reini,好的,提交了一个涵盖这个的答案。

标签: windows qt opencv eigen visual-studio-2010


【解决方案1】:

根据staticHeaders.h 代码(第4 行),您需要有一个名为“Eigen”的文件夹,其中包含“Core”文件。例如,我在 Linux 上有 /usr/include/eigen2/Eigen/Core,在这种情况下,必须使用 qmake 将 /usr/include/eigen2 添加到 INCLUDEPATH 变量中。确保你有C:\libs\pcl-1.6.0\3rdParty\Eigen\include

此外,如果根据您的评论它在 QtCreator 中不起作用,您可以随时尝试通过 execute qmake 选项显式强制重新运行 qmake。

【讨论】:

  • 谢谢。还发现,Eigen 是一个只有头文件的库,没有任何必要的库 - 所以根本不需要对 LIBS 进行修改
  • @Reini:是的,你是对的。我的意思是写 INCLUDEPATH,对不起。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2016-06-17
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多