c++ - 为什么我不能在同一个 MS VS 解决方案中的两个控制台应用程序中使用 C++ Eigen(仅 header 库)?

标签 c++ visual-studio eigen project-settings header-only

我用两个控制台应用程序项目制作了一个 Microsoft 可视化解决方案。我可以在一个项目中使用 Eigen 库,只需在属性中声明它,如下所示:

$(ProjectDir)Eigen\eigen3;

我可以使用“Eigen::Vector3d”等库结构,没问题。 现在,当我尝试将仅 header 库复制到第二个项目文件夹并尝试为第二个项目文件夹设置相同的属性并使用该结构时,我遇到了编译错误。

然后,当我不将 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' is not a valid template type argument for parameter '_Ty'

c:\users\alam syed\documents\someproject2.h(11): error C2903: 'allocator': symbol is neither a class template nor a function template

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', expected a real type

为什么在同一个解决方案中有两个项目尝试在它们的项目文件夹中独立拥有自己的库是不可行的?此外,为什么我不能将 Eigen 文件夹从一个引用到第一个?最后,我们如何绕过这个怪癖/设计问题?

最佳答案

我刚刚对此进行了测试,并且在一种解决方案中是可能的。

  • 创建空解决方案
  • 添加了两个控制台项目
  • 将特征 header 从 zip 复制到两个项目中的每一个
  • 在第一个项目文件夹中将它们重命名为eigen1,在第二个项目文件夹中将它们重命名为eigen2
  • 使用 eigen 文档中的教程代码在每个项目中创建了两个 .cpp 文件
  • 在第一个项目中将 ($ProjectDir)eigen1 设置为“Additional Include Directories”并且 ($ProjectDir)eigen2 在第二个项目中
  • 检查构建的调试二进制文件是否引用了正确的特征 header 嵌入式调试信息

如果您不重命名 eigen 文件夹,这甚至可以工作。

我只能想到两个你想要这样做而不是使用 common 的原因 目录方法:

  • 每个项目都使用不同版本的库,或者您想拥有 稍后此选项的灵 active
  • 您想使用自定义版本的 eigen(和/或其他库)应用您的 自己的补丁

关于c++ - 为什么我不能在同一个 MS VS 解决方案中的两个控制台应用程序中使用 C++ Eigen(仅 header 库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52394059/

相关文章:

c++ - 对于迭代器,我的 vector 包装器的 'begin' 和 'end' 函数要返回什么?

c++ - 对角矩阵的特征使用

c++ - 将类型与特征矩阵混合的错误

visual-studio - 通过DTE获取项目TargetPath的宏值

visual-studio-2010 - 如何在非用户特定位置安装 Visual Studio 项目模板?

c++ - 使用 pacman 从 msys2 安装的库构建应用程序

c++ - 将 vector 值传递给 Eigen 库格式

c++ - OpenCV waitKey() 函数在 mac 上总是返回 255

c++ - 置换成本

c++ - __func__ 指针的两个 constexpr 实例的差异仍然是 constexpr 吗?