我用两个控制台应用程序项目制作了一个 Microsoft 视觉解决方案。我可以在一个项目中使用 Eigen 库,只需在属性中声明它,如下所示:
$(ProjectDir)特征\特征3;
我可以使用像“Eigen::Vector3d”等库结构没问题。现在,当我尝试将仅标头库复制到第二个项目文件夹中并尝试为第二个项目文件夹设置相同的属性,并使用该结构时,我会遇到编译错误。
然后,当我不将 Eigen 文件夹复制到第二个文件夹中并简单地尝试从第二个文件夹中引用第一个文件夹时,我会得到另一组编译时错误。
$(SolutionDir)someproject1\Eigen\eigen3;
第二种情况的错误是这样的:
c:\users\alam syed\documents\someproject2.h(11): error C2653: 'Eigen': is not a class or namespace name
c:\users\alam syed\documents\someproject2.h(11): error C2065: 'Vector3f': undeclared identifier
c:\users\alam syed\documents\someproject2.h(11): error C2923: 'std::vector': 'Vector3f' 不是参数 '_Ty' 的有效模板类型参数
c:\users\alam syed\documents\someproject2.h(11): 错误 C2903: 'allocator': 符号既不是类模板也不是函数模板
c:\users\alam syed\documents\someproject2.h(11): error C3203: 'allocator': unspecialized class template can't be used as a template argument for template parameter '_Alloc', 应为真实类型
为什么在同一个解决方案中有两个项目试图在他们的项目文件夹中独立拥有自己的库是不行的?此外,为什么我不能将 Eigen 文件夹从一个引用到第一个?最后,我们如何绕过这个怪癖/设计问题?