vs2017无法在Linux子系统上包含标头

时间:2018-11-18 18:59:38

标签: c++ visual-studio ubuntu windows-subsystem-for-linux opencascade

我想在Windows 10的Linux子系统(ubuntu)中的vs2017中使用C ++程序中的C ++ OpenCascade(OCE)库。

我将OCE编译到linux子系统中;我在Windows中也有OCE编译的二进制文件。

当我尝试在代码(#include <Adaptor2d_Curve2d.hxx>中包含来自OCE的标头时,出现此错误:

error : Adaptor2d_Curve2d.hxx: No such file or directory
error : #include <Adaptor2d_Curve2d.hxx>
error :          ^~~~~~~~~~~~~~~~~~~~~~~
error : compilation terminated.

我通过使用$(ProjectDir)或$(RemoteRootDir)路径在additional include directories中的vs项目中添加了OCE包含路径。我检查了一下,路径是正确的。

我创建了一个Linux控制台应用程序。 我的代码:

// from oce
#include <Adaptor2d_Curve2d.hxx>

int main()
{
   printf("hello from CAO3DConverterTestApp!\n");
   return 0;
}

我已在我的项目设置中将这些行添加到Additional Include Directories

$(ProjectDir)..\oce-0.18.3\include\oce
$(RemoteRootDir)..\oce\build\inc

那么从Windows 10在Linux子系统中使用vs2017在C ++代码中添加外部库和标头的过程是什么?

这是具有Boost依赖项而不是OCE的最小项目

  • 使用ubuntu linux子系统用vs2017构建一个c ++ linux控制台应用程序。
  • 在项目属性中的Additional Include Directories中包括boost header路径

  • #include <any.hpp>(boost的标题)添加到main.cpp文件中

-I语句正确-I "C:\<myPath>\dependencies\boost_1_68_0\boost\",但仍然有错误

error : any.hpp: No such file or directory
error :  #include <any.hpp>
error :           ^~~~~~~~~
error : compilation terminated.

我还应该做什么?

refs:https://blogs.msdn.microsoft.com/vcblog/2017/02/08/targeting-windows-subsystem-for-linux-from-visual-studio/

1 个答案:

答案 0 :(得分:1)

没有最少的示例就无法真正调试项目,但是以下内容可以帮助您弄清楚发生了什么:

在VS2017中,右键单击您的项目,选择属性。在C / C ++下,选择命令行。 在这里,您可以看到IDE用来编译源文件的命令行。检查所有/ I语句,并确保其中之一指向faces_left = np.asarray([f for f in faces if np.all(np.isin(i_vert_left,f)) ]) 所在的位置。