c++ - 英特尔 TBB 集成问题 - Google 测试项目中的 VS2013 编译错误

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

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

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

gtestalgo 项目对 algo 项目存在构建依赖性。

单独的算法项目构建成功。算法项目包括英特尔 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)?

  • 知道这里会出什么问题吗?

最佳答案

Sources in gtestalgo project include several header files from algo project: #include "algo_main.h", etc...

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

由于 Algo 项目编译良好,我得出结论,它正确设置了包含目录,因此可以找到 TBB header 。

但是我在你的描述中没有看到在 GTestAlgo 项目中如何设置包含目录。以与 TBB 位置相同的方式设置它们,它可能会编译正常。

关于c++ - 英特尔 TBB 集成问题 - Google 测试项目中的 VS2013 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28212685/

相关文章:

visual-studio-2010 - 如何配置 Visual Studio 10 以发布我的字体文件?

c++ - DLL-导出模板基类的静态成员

c# - System.MissingMethodException : Method not found: '...EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder` 1. HasIndex(...)'

c++ - 如何使用 ATL/MSOLEDBSQL 启用连接资源池?

c++ - 我的 map 中的内存问题在哪里?

c++ - 静态数组的大小

javascript - 使用 VS2010 缩小 JavaScript 并附加版本号

c++ - 启动状态机无法处理启动时的内部转换

c++ - boost C++ : how to return file from folder via tcp?

visual-studio - Visual Studio 2013 更新 2 - 代码文件随机损坏