为什么我不能在同一 MS VS 解决方案中的两个控制台应用中使用C++特征(仅标头库)?
Why can't I use C++ Eigen (header only lib) in two console apps within the same MS VS solution?
我用两个控制台应用程序项目制作了一个Microsoft可视化解决方案。我可以在一个项目中使用 Eigen 库,只需在属性中声明它,如下所示:
$(ProjectDir(Eigen\eigen3;
我可以使用像"Eigen::Vector3d"等库结构没有问题。 现在,当我尝试将仅标头库复制到第二个项目文件夹中并尝试为第二个项目文件夹设置相同的属性并使用结构时,我会收到编译错误。
然后,当我不将 Eigen 文件夹复制到第二个文件夹并简单地尝试从第二个文件夹引用第一个文件夹中时,我会收到另一组编译时错误。
$(SolutionDir(someproject1\Eigen\eigen3;
第二种情况下的错误是这样的:
C:\用户\Alam Syed\Documents\someProject2.h(11(: 错误 C2653: "特征":不是类或命名空间名称
C:\用户\阿拉姆 syed\documents\someproject2.h(11(: 错误 C2065: 'Vector3f': 未声明 标识符
C:\Users\Alam Syed\Documents\someProject2.h(11(: error C2923: 'std::vector': 'Vector3f' 不是有效的模板类型参数 对于参数"_Ty">
C:\users\Alam Syed\documents\someProject2.h(11(: 错误 C2903:"分配器":符号既不是类模板也不是 函数模板
C:\users\Alam Syed\documents\someProject2.h(11(: 错误 C3203:"分配器":无法使用非专用类模板 作为模板参数"_Alloc"的模板参数,应 实数类型
为什么在同一解决方案中有两个项目尝试在其项目文件夹中独立拥有自己的库是不行的?此外,为什么我不能将特征文件夹从一个引用到第一个?最后,我们如何绕过这个怪癖/设计问题?
我刚刚对此进行了测试,可以在一个解决方案中实现。
- 已创建空解决方案
- 添加了两个控制台项目 将
- zip 中的特征标头复制到两个项目中的每一个中
- 在第一个项目文件夹中将它们重命名为
eigen1
,在第二个项目文件夹中重命名为eigen2
- 使用 Eigen 文档中的教程代码在每个项目中创建了两个.cpp文件
- 在第一个项目中将
($ProjectDir)eigen1
设置为"其他包含目录",并且 第二个项目中($ProjectDir)eigen2
- 检查构建的调试二进制文件是否引用了正确的特征标头 嵌入式调试信息
如果您不重命名特征文件夹,这甚至有效。
我只能想到两个原因,为什么你想这样做而不是使用common
目录方法:
- 每个项目都使用不同版本的库,或者您希望拥有 以后此选项的灵活性
- 您想使用自定义版本的 特征(和/或其他库(应用您的 自己的补丁
- C++控制台应用程序阻止退出
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 如何在 Win32 C++控制台应用程序中调用 UWP 类库
- 什么是仅调用一次并调用参数的控制台应用
- 是否可以从控制台应用程序使用 C++/WinRT 创建窗口?
- 如何创建一个使用开源c项目的c++控制台应用程序
- c ++控制台应用程序,如何在控制台外部打印字符
- 像 CPP 中的控制台一样的应用程序
- 调试控制台 ChessEngine.exe "used"在另一个应用程序(国际象棋 GUI)中
- 为什么我不能在同一 MS VS 解决方案中的两个控制台应用中使用C++特征(仅标头库)?
- 将控制台应用程序直接输出到Visual Studio而不是外部Windows控制台中
- 如何在 Win32 控制台应用程序中注册不可见的窗口类?
- C++控制台应用,其中有两个冲突的对象不工作
- 如何将从控制台应用程序C++回调设置为C++ COM DLL
- 使用代码在 AWS 开发工具包C++控制台应用程序上设置凭证
- 直接输入控制台应用程序
- C++调试控制台应用程序
- C++控制台应用程序调用C++/CLI静态库
- 如何在控制台应用程序中添加滚动功能以显示更大的输入
- 如何在将Visual Studio C++控制台应用程序连接到Microsoft SQL Server时修复"