我有一个具有以下结构的VS2013解决方案:
gtestalgo项目,在库algo.lib上带有gtests
算法项目,编译为dll并将.lib导出到$(SolutionDir)lib / Release_x64文件夹
gtestalgo项目与algo项目之间存在构建依赖关系。
仅算法项目就能成功构建。 algo项目包含Intel TBB:链接器属性包含附加库目录“ $(tbb_path)\lib\intel64\$(tbb_subdir)
”并输入“ tbb.lib
”。
gtestalgo项目无法编译。错误都与TBB有关。更准确地说,错误是指算法项目中无法识别TBB的文件,例如“ TBB不是类或名称空间名称”。 gtestalgo项目已将../algo
作为附加包含目录,其中../algo
包含algo项目的所有源文件和头文件。 gtestalgo项目链接库algo.lib,并且正确设置了链接程序附加库目录和输入。 gtestalgo项目的来源包括来自algo项目的多个头文件:#include "algo_main.h"
等。
我尝试将TBB链接到gtestalgo项目(具有与algo项目相同的Linker属性),并且我也尝试删除此链接。在这两种情况下,编译错误都是相同的。
该algo项目如何编译,但gtestalgo项目却没有
编译,抱怨算法中没有识别出TBB
项目?
如果没有代码,我应该将TBB库链接到gtestalgo项目吗
gtestalgo项目来源使用TBB(algo项目仅实施
TBB API)?
知道这里有什么问题吗?
最佳答案
gtestalgo项目中的源代码包括algo项目中的几个头文件:#include "algo_main.h"
等。
这表明如果Algo头文件包含TBB,则将这样的Algo头文件包含在GTestAlgo项目中会带来对TBB的依赖。
由于Algo项目编译良好,因此我得出结论,它正确设置了Include目录,以便可以找到TBB标头。
但是我在您的描述中看不到如何在GTestAlgo项目中设置Include目录。对于TBB位置,以相同的方式设置它们,可能会编译良好。