我正在Visual Studio 2017中构建一个解决方案,我们在WSL上针对ARM64目标进行交叉编译。
我已经设置了所有的包含路径,编译似乎可以为这个特定的文件工作。
在文件顶部的#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
2条答案
按热度按时间lndjwyie1#
问题似乎是由于在WSL中创建的文件无法与Intellisense一起使用
https://developercommunity.visualstudio.com/content/problem/259166/intellisense-not-working-for-files-created-under-w.html
显然,在撰写本文时,这个问题应该在Visual Studio 2019中得到了修复,但我还无法进行测试。将我的工作场所切换到Visual Studio的预览版本来修复这个问题并不容易。
k7fdbhmy2#
在VS 2019中,我可以通过删除CMake缓存然后重建解决方案来修复这个问题:项目〉CMake缓存〉删除缓存。我们不再使用VS项目文件。如果您仍在使用VS项目文件,可能会有类似的重置。