Visual Studio包含DLL子项目标题问题

时间:2014-11-30 09:29:06

标签: c++ visual-studio-2013 qt5

前几天我在视觉工作室里遇到了一个问题,并认为我已经解决了所有问题,但事实证明,我没有。我的问题也很奇怪,因为一个选项有效,而另一个没有。我遇到的行为有点奇怪,但我会尽力解释它。首先,这里是我尝试的一些代码(其中一个有效)包含我创建的dll的标题:

#include <QtWidgets/QApplication>
#include <QMainWindow>
/*
    This below works; it seems to be stepping backwards out of the
    project and into the folder of the dll project.
*/
#include "../ArclightFramework/GameWindow.h" // This works.
/*
    Below does not work, even though the path has been set in the
    additional directories field of the project. Oddly, though, I
    do get intellisense for the path the below.
*/
#include "ArclightEngine/ArclightFramework/GameWindow.h" // Does not work.
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    GameWindow f;
    f.show();
    return a.exec();
}

第一个包括完美的工作,我可以生活在我的未来包括它。但是,有谁知道为什么第二个包括不起作用?这就是我所说的“不起作用。”

1>------ Build started: Project: ArclightEngine, Configuration: Debug Win32 ------
1>  main.cpp
1>main.cpp(13): fatal error C1083: Cannot open include file: 'ArclightEngine/ArclightFramework/GameWindow.h': No such file or directory
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========

这里甚至是同一个鼠标错误的图片: enter image description here

你看,奇怪的是,我DID包含了我的“其他导入目录”的路径;这是一张图片:enter image description here

这是该目录,以及显示一切应该正确找到的完整路径。 enter image description here

我的问题非常简单。为什么visual studio找不到包含文件?

更新:这是另一张图片,展示了Intellisense如何提供包含路径的完成,但同样,它之后无效! enter image description here

另一个更新: 好吧,所以我尝试了一些新的东西。这一次,我没有添加绝对路径到Additional Include字段,而是添加:“$(ProjectDir)../../”Intellisense再一次提供了此路径及其中的标题的完成。但它之后不会识别文件本身,但它们确实存在并且路径是完美的。我的路径使用上面的宏将我的包含路径转换为:"ArclightEngine/ArclightFramework/BLAH.h"

这是显示我包含的路径的新图片: enter image description here

我不明白我做了什么和正在工作的路径"#include "../ArclightFramework/GameWindow.h""

之间的区别

另外,显然这个包含路径现在也有效:

"#include "/Users/Krynn/Desktop/ArclightEngine/ArclightEngine/ArclightFramework/GameWindow.h""

TL; DR 我想要的就是能够输入“#include”ArclightEngine / ArclightFramework / blah.h“

1 个答案:

答案 0 :(得分:2)

你说用户包括:

C:\Users\Krynn\Desktop\ArclightEngine

你正试图包括:

"ArclightEngine/ArclightFramework/GameWindow.h"

因此,第一条路径VS将尝试使用引号而不是尖括号:

C:\Users\Krynn\Desktop\ArclightEngine\ArclightEngine\ArclightFramework\GameWindow.h

这两条路径只是加在一起,所以永远不会起作用。

因此包括:

"../ArclightEngine/ArclightFramework/GameWindow.h"

变为:

C:\Users\Krynn\Desktop\ArclightEngine\..\ArclightEngine\ArclightFramework\GameWindow.h

哪个成为:

C:\Users\Krynn\Desktop\ArclightEngine\ArclightFramework\GameWindow.h

因此这是有效的。所以另一种选择应该包括:

ArclightFramework\GameWindow.h

更新

看起来您真正的问题是您更新了“Release Win32”的配置,但是您在哪里构建具有不同设置的“Debug Win32”。更新适用于所有配置和平台(例如包含路径)的设置时,请务必从组合框中选择“所有配置”和“所有平台”。