【问题标题】:Intel TBB integration issue - VS2013 Compilation error in Google Test project英特尔 TBB 集成问题 - Google 测试项目中的 VS2013 编译错误
【发布时间】:2015-01-29 10:44:09
【问题描述】:

我有一个具有这种结构的 VS2013 解决方案:

  • gtestalgo 项目,在库 algo.lib 上带有 gtests
  • 算法项目,编译为 dll 并将 .lib 导出到 $(SolutionDir)lib/Release_x64 文件夹

在 algo 项目上存在 gtestalgo 项目的构建依赖关系。

算法项目单独构建成功。算法项目包括英特尔 TBB:链接器属性包含附加库目录“$(tbb_path)\lib\intel64\$(tbb_subdir)”并输入“tbb.lib”。

gtestalgo 项目无法编译。错误都与TBB有关。更准确地说,错误是指算法项目中无法识别 TBB 的文件,例如“TBB 不是类或命名空间名称”。 gtestalgo 项目有../algo 作为附加包含目录,其中../algo 包含算法项目的所有源文件和头文件。 gtestalgo 项目链接库 algo.lib,并且正确设置了链接器附加库目录和输入。 gtestalgo 项目中的源包括来自 algo 项目的几个头文件:#include "algo_main.h" 等...

我尝试将 TBB 链接到 gtestalgo 项目(具有与算法项目中相同的链接器属性),并且我还尝试删除此链接。在这两种情况下,编译错误是相同的。

  • algo项目怎么编译了,gtestalgo项目没有 编译,抱怨 TBB 在来自 algo 的来源中无法识别 项目 ?

  • 如果没有代码,我应该将 TBB 库链接到 gtestalgo 项目吗? gtestalgo 项目源使用 TBB(algo 项目仅实现 待定 API)?

  • 知道这里可能出了什么问题吗?

【问题讨论】:

  • 您使用的是 MSVC 还是 Intel Parallel XE?
  • 英特尔线程构建模块
  • 不,我的意思是编译器构建环境。您使用的是 Microsoft 库存工具链还是英特尔工具链。
  • 你在algo项目中使用预编译头文件(stdafx.h)吗?它可能包含对gtestalgo 不可见的包含。
  • @MorphingDragon Visual Studio 编译器

标签: c++ visual-studio-2010 visual-studio dll tbb


【解决方案1】:

gtestalgo 项目中的源包括来自 algo 项目的几个头文件:#include "algo_main.h" 等...

这表明如果 Algo 头文件包含 TBB,则在 GTestAlgo 项目中包含此类 Algo 头文件会带来对 TBB 的依赖。

由于 Algo 项目编译良好,我认为它正确设置了 Include 目录,因此可以找到 TBB 标头。

但我没有在您的描述中看到如何在 GTestAlgo 项目中设置包含目录。将它们设置为与 TBB 位置相同的方式,它可能编译得很好。

【讨论】:

    【解决方案2】:

    您可以直接将其包含在 #include "../algo/stdafx.h" 之类的内容中(如果有,则在 gtestalgo/stdafx.h 中)。

    这足以解决问题。 algo 项目的 stdafx 预编译头文件中的某些包含对 gtestalgo 项目不可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多