如何在WSL上解决intellisense'找不到符号的定义'

时间:2019-02-05 20:28:45

标签: c++ visual-studio include intellisense windows-subsystem-for-linux

我正在Visual Studio 2017中构建一个解决方案,在该解决方案中,我们在WSL上针对ARM64目标进行交叉编译。

我已经设置了所有包含路径,并且编译似乎适用于此特定文件。所讨论的标题位于W:\驱动器上,该驱动器是WSL文件系统

在文件的#include行顶部,我可以单击有问题的标题(),然后右键单击以打开文档。这将打开正确的标题,而我的定义在此新打开的文档中。 Intellisense似乎在此文件上无法正常工作,因为枚举或定义似乎都没有正确突出显示。

但是,如果我要使用.c文件中的定义并尝试转到该定义,则会收到“找不到符号'V4L2_PIX_FMT_HEVC'的定义”

将有问题的标题移动到C:\驱动器并将包含路径更改为相应的新路径时,Intellisense似乎可以识别定义,并且“转到定义”正常工作

#include <linux/videodev2.h> //Open document works
#include <linux/v4l2-controls.h> //Open document works

...
case UDP_VIDEO_PROTOCOL_MPEG2:
    codec = V4L2_PIX_FMT_MPEG2; //Go to definition does not work
    break;
case UDP_VIDEO_PROTOCOL_H265:
    codec = V4L2_PIX_FMT_HEVC; //Go to definition does not work

1 个答案:

答案 0 :(得分:0)

该问题似乎源于在WSL中创建的文件无法与Intellisense一起使用

https://developercommunity.visualstudio.com/content/problem/259166/intellisense-not-working-for-files-created-under-w.html

显然在撰写本文时,该问题据说已在Visual Studio 2019中修复,但我尚未能够进行测试。仅为了解决问题,将工作场所切换到Visual Studio的预览版并不容易。