且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在Visual Studio 2017 Linux项目中无法识别Linux头文件

更新时间:2022-02-10 08:46:44

在我的Linux系统(Debian Jessie)上,ucontext.husr/include中,而该文件又包含sys/ucontext.h,而gcc将在usr/include/i386-linux-gnu/sys中找到. .第一个定义了功能getcontextsetcontext.第二个定义了数据结构ucontext_t等.

On my Linux system (Debian Jessie) ucontext.h is in usr/include which in turn includes sys/ucontext.h which gcc will find in usr/include/i386-linux-gnu/sys. The first defines the functions getcontext and setcontext. The second defines the data structures ucontext_t etc.

在Windows主机上,VCLinux在C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\Linux\include\usr\include\x86_64-linux-gnu\sys中安装了第二个ucontext.h的副本(定义了数据结构).但是第一个ucontext.h不存在.

On the Windows host, VCLinux has installed a copy of the second ucontext.h (which defines the data structures) in C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\Linux\include\usr\include\x86_64-linux-gnu\sys . But the first ucontext.h is not present.

VCLinux/Visual Studio将在Linux远程上编译并运行此程序:

VCLinux/Visual Studio will compile and run this program on the Linux remote:

#include <ucontext.h>
#include <iostream>
int main()
{
   ucontext ucxt;
   ::getcontext (&ucxt);
   std::cout << ucxt.uc_flags << std::endl;
   return 0;
}

但是IntelliSense将不了解功能getcontextsetcontext或关联的数据结构.因此,您将在名称下看到很少的红色花鼓,并且没有完成帮助.

But IntelliSense will not know about the functions getcontext and setcontext or the associated data structures. So you will get little red squiggles under the names and no completion assistance.

您可以复制第一个ucontext.h的副本,并将其放在Windows主机上的C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\Linux\include\usr\include中.这样,一切都会正常进行.并且您可能会因 VCLinux GitHub网站上缺少的标头而产生问题.

You can take a copy of the first ucontext.h and put it in C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\Linux\include\usr\include on your Windows host. Then everything will work as it should. And you could raise an issue for the missing header on the VCLinux GitHub site.

注意:Windows路径适用于Visual Studio2015.2017年将有所不同.

Note: Windows paths are for Visual Studio 2015. They will be different for 2017.

适用于VCLinux 1.0.6.

Applies to VCLinux 1.0.6.

==============

==============

更新18年4月10日

Microsoft已解决Linux系统之间标准包含文件位置差异的问题.如此Visual C ++博客中所述后,GCC设置的特定标头将从Linux远程复制并按每个连接存储在Windows主机上.

Microsoft have addressed the issue of differences in standard include file locations between Linux systems. As explained in this Visual C++ blog post, the headers specific to the GCC setup are copied from the Linux remote and stored on the Windows host on a per-connection basis.