Visual Studio 2017 C ++ linux应用程序,标头未复制到目标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio 2017 C ++ linux应用程序,标头未复制到目标相关的知识,希望对你有一定的参考价值。

我有一个VS 2017 C ++ linux应用程序,它部署到Windows 10中的Windows Linux子系统上的Bash。我使用C ++项目属性'Additional Includes'包含了头目录。但是,在编译项目时,编译器会抱怨它无法打开头文件。由于源文件是在目标机器上编译而不是在本地编译,我假设头文件也需要在那里复制,但是需要什么设置。目前它们没有被复制,但它们可以在IDE中浏览

谢谢

答案

在Visual Studio社区2017 15.9.7和Visual Studio Enterprise 2019预览版4上测试。

Visual Studio需要下载localmachine中的所有远程标头,以获得intellisense的正确行为。

新方法'rsync_ssh'不会下载所有标头。您可以通过sftp_ssh使用旧方法.zip。

0.添加远程连接。 工具 - >选项 - >跨平台 - >连接管理器

1.从工具 - >选项 - >跨平台 - >连接管理器 - >远程标头智能感知管理器中选择更新连接。然后单击“浏览”按钮。

2. C: Users [YourUser] AppData Local Microsoft Linux HeaderCache 1.0 [IdNumber]将HeaderCache settings.xml.unused文件重命名为settings.xml

3.在settings.xml文件中将syncMethod更改为sftp_ssh。

4.从工具 - >选项 - >跨平台 - >连接管理器 - >远程标头智能感知管理器更新标头缓存。 5.享受。

Before

After

另一答案

用于Linux开发的Visual C ++(VCLinux)不会将标头复制到不在Visual Studio项目中的远程(Linux)系统。

VCLinux在Windows主机上安装大多数常见Linux系统头文件(/usr/include等)的副本,以便IntelliSense可以看到它们,但Linux系统的系统头必须存在于远程程序中以供应用程序编译(使用g ++)。默认情况下,系统标头位于g++的包含搜索路径中。默认情况下,VCLinux副本位于Visual Studio IntelliSense包含路径中。如果您必须指定Additional Includes,则表明您感兴趣的标头属于某些可选组件,您可能必须在Linux远程上显式安装。

值得记住的是,Windows子系统Linux(WSL)仍然是有限的,即它还没有(在)像Debian这样的传统Linux发行版中找到的所有内容。虽然从某处抓取丢失的标头可能允许您的应用程序编译它可能无法链接或运行。

这也可能是有趣的:Linux header file not recognized in Visual Studio 2017 Linux Project

以上是关于Visual Studio 2017 C ++ linux应用程序,标头未复制到目标的主要内容,如果未能解决你的问题,请参考以下文章

visual studio2017 添加dll库

无法找到visual studio 2017生成工具

visual studio有没有 选择一行 的快捷键?

visual 2017c++兼容2015c++吗

C++17 标准库包括不使用 Visual Studio 2017 中的 Android 项目

如何使用 Visual Studio 2017 Linux 支持编译和构建 C++17 代码?