【问题标题】:C++: cannot open source file 2 layers deepC ++:无法打开2层深的源文件
【发布时间】:2020-07-27 14:50:37
【问题描述】:

我正在 Visual Studio 2017 中处理两个相互关联的项目。

第一个项目是Wrapper,由Wrapper.hWrapper.cpp组成。 Wrapper 包括 ThirdParty.h。我可以毫无问题地编译/构建Wrapper

#include "ThirdParty.h"

std::string foo(){
    return "This is Third Party text";
}

第二个项目是Principal,由Principal.hPrincipal.cpp组成。 Principal 包括 Wrapper

#include "Wrapper.h"

std::string bar(){
    return Wrapper.foo() + "\nThis is Wrapper text";
}

// Expected output:
//This is Third Party text
//This is Wrapper text

但是,当我尝试构建Principal 时,我被告知它无法打开ThirdParty.h(也看不到其中使用的类型等)。

我已经尝试包含ThirdParty 存储在Properties 下的目录> C/C++ > General > Additional include directories,但这没有区别。我检查了编译设置,一切都按预期编译为Release/x64

我该怎么办?

编辑: 这是命令行:

/permissive- /MP /GS /GL /analyze- /W3 /Gy /Zc:wchar_t /I"C:\path\to\ThirdParty" /I"C:\Path\To\Wrapper" /Zi /Gm- /O2 /sdl- /Fd"Release\vc141.pdb" /Zc:inline /fp:precise /D"_MBCS" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MD /FC /Fa"Release" /EHsc /nologo /Fo"Release" /Fp"Release\principal.pch" /诊断:经典

【问题讨论】:

  • 如果路径中有空格,您可能需要引用它们。在c++ 中编程时,我从不使用带空格的路径
  • 此外,Additional include directories 路径是按配置(调试/发布)和平台(Win32/x64)配置的。确保您已更正实际构建的配置和平台的设置。
  • 顺便说一句,我确实使用具有超过 2 个依赖库的项目(您称之为 2 层深),我不需要做任何特别的事情来使其工作。
  • 我认为您需要为 Principal 项目添加项目属性 c++->Command Line。这可能有助于我们帮助您调试问题。
  • 我不明白为什么它失败了抱歉。

标签: c++ visual-studio include


【解决方案1】:

我建议你可以尝试检查以下几点:

1,ThirdParty.h 应包含在 Wrapper.h 文件中,而不是 Wrapper.cpp 文件中。

2、ThirdParty.hWrapper.h的绝对路径需要在Additional include directories中加上。两个路径用分号隔开。

3、检查修改后,尝试构建Principal时,确保Wrapper已经构建成功

【讨论】:

  • 检查,检查和检查,不幸的是(我在我的问题中添加了 .cpp 文件中的包含,以便它适合最小可行示例模具)
  • 我建议你可以尝试将#include"ThirdParty.h"添加到Wrapper.h中。
  • 我也是。同样,出于 MVE 的原因,我只是将它们“添加”到 .cpp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 2021-12-21
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多