当前位置: 首页 > 知识库问答 >
问题:

VSC IntelliSense代码工作正常,但PCL(点云库)除外

谷梁晟
2023-03-14

就其本身而言,关于VSCode IntelliSense已经有很多问题,例如que1、que2、que3等。然而,他们主要讨论IntelliSense一般不起作用;不为STL工作;等等

另一方面,在我的例子中,我已经在使用微软的VSCode C/C扩展,IntelliSense可以很好地用于所有不同的内置类、函数、STL等。但是,当涉及到PCL(点云库)时,不知怎的,不可思议的是,IntelliSense不起作用。

如果您熟悉PCL,那么您一定知道它的大多数语法都太大了。由于IntelliSense不适用于它,如果你在键入每个字符时不密切注意,就很有可能出现打字错误,例如。,

pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);

事实上,即使是那些变量和函数的自动补全也不起作用——也就是说,从上面的示例中,每次我想使用它时,我都必须手动键入point\u cloud\u ptr的每个字符。

那么,我该怎么解决这个问题呢?或者它不可能为PCL

注意:我在Ubuntu 16和Ubuntu 18上都遇到了这个问题。我已经安装了PCL使用sudo apt安装libpcl-dev和头文件位于/usr/包括/目录。

共有1个答案

羊越
2023-03-14

在GitHub上尝试了不同的方法并获得了Microsoft VSCode(和C/C扩展)团队的帮助后,IntelliSense似乎无法工作,可能是因为扩展无法找到PCL头。

在Ubuntu中,PCL头通常存储在/usr/include/PCL中-

{
    "configurations": [
        {
            .
            .
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include/pcl-1.8/**"
            ],
            .
            .
            .
        }
    ],
    "version": 4
}

“/usr/include/pcl-1.8/**”中,**用于在/usr/include/pcl-1.8/目录下进行递归搜索。然而,当我发布这个问题时(我想今天也是如此),它已经不起作用了。它无法通过pcl下的子目录-

解决方案01:(如果只想将更改应用于当前项目,请使用此选项)

打开C/C扩展配置文件:c_cpp_properties.json(在Linux上,按CtrlShiftP并选择C/C: Edit Configurations(JSON)

现在,由于递归搜索不起作用,另一种方法是指定includePath下的所有子目录:

{
    "configurations": [
        {
            .
            .
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include/eigen3",
                "/usr/include/pcl-1.8",
                "/usr/include/pcl-1.8/pcl",
                "/usr/include/pcl-1.8/pcl/2d",
                "/usr/include/pcl-1.8/pcl/apps",
                "/usr/include/pcl-1.8/pcl/common",
                "/usr/include/pcl-1.8/pcl/compression",
                "/usr/include/pcl-1.8/pcl/console",
                "/usr/include/pcl-1.8/pcl/features",
                "/usr/include/pcl-1.8/pcl/filters",
                "/usr/include/pcl-1.8/pcl/geometry",
                "/usr/include/pcl-1.8/pcl/impl",
                "/usr/include/pcl-1.8/pcl/in_hand_scanner",
                "/usr/include/pcl-1.8/pcl/io",
                "/usr/include/pcl-1.8/pcl/kdtree",
                "/usr/include/pcl-1.8/pcl/keypoints",
                "/usr/include/pcl-1.8/pcl/ml",
                "/usr/include/pcl-1.8/pcl/modeler",
                "/usr/include/pcl-1.8/pcl/octree",
                "/usr/include/pcl-1.8/pcl/outofcore",
                "/usr/include/pcl-1.8/pcl/people",
                "/usr/include/pcl-1.8/pcl/range_image",
                "/usr/include/pcl-1.8/pcl/recognition",
                "/usr/include/pcl-1.8/pcl/registration",
                "/usr/include/pcl-1.8/pcl/ros",
                "/usr/include/pcl-1.8/pcl/sample_consensus",
                "/usr/include/pcl-1.8/pcl/search",
                "/usr/include/pcl-1.8/pcl/segmentation",
                "/usr/include/pcl-1.8/pcl/stereo",
                "/usr/include/pcl-1.8/pcl/surface",
                "/usr/include/pcl-1.8/pcl/tracking",
                "/usr/include/pcl-1.8/pcl/visualization"
            ],
            .
            .
            .
        }
    ],
    "version": 4
}

解决方案02:(如果您希望在所有项目中全局应用更改,请使用此选项)

作为C/C配置文件:C\u cpp\u属性。json特定于每个项目,编辑只会将更改应用于当前项目。因此,要在所有项目中应用更改,必须更新设置。json然后是c\u cpp\u属性。json

打开settings.json并添加以下文本:

    "C_Cpp.default.includePath": [
        "/usr/include/eigen3",
        "/usr/include/pcl-1.8",
        "/usr/include/pcl-1.8/pcl",
        "/usr/include/pcl-1.8/pcl/2d",
        "/usr/include/pcl-1.8/pcl/apps",
        "/usr/include/pcl-1.8/pcl/common",
        "/usr/include/pcl-1.8/pcl/compression",
        "/usr/include/pcl-1.8/pcl/console",
        "/usr/include/pcl-1.8/pcl/features",
        "/usr/include/pcl-1.8/pcl/filters",
        "/usr/include/pcl-1.8/pcl/geometry",
        "/usr/include/pcl-1.8/pcl/impl",
        "/usr/include/pcl-1.8/pcl/in_hand_scanner",
        "/usr/include/pcl-1.8/pcl/io",
        "/usr/include/pcl-1.8/pcl/kdtree",
        "/usr/include/pcl-1.8/pcl/keypoints",
        "/usr/include/pcl-1.8/pcl/ml",
        "/usr/include/pcl-1.8/pcl/modeler",
        "/usr/include/pcl-1.8/pcl/octree",
        "/usr/include/pcl-1.8/pcl/outofcore",
        "/usr/include/pcl-1.8/pcl/people",
        "/usr/include/pcl-1.8/pcl/range_image",
        "/usr/include/pcl-1.8/pcl/recognition",
        "/usr/include/pcl-1.8/pcl/registration",
        "/usr/include/pcl-1.8/pcl/ros",
        "/usr/include/pcl-1.8/pcl/sample_consensus",
        "/usr/include/pcl-1.8/pcl/search",
        "/usr/include/pcl-1.8/pcl/segmentation",
        "/usr/include/pcl-1.8/pcl/stereo",
        "/usr/include/pcl-1.8/pcl/surface",
        "/usr/include/pcl-1.8/pcl/tracking",
        "/usr/include/pcl-1.8/pcl/visualization"
    ]

打开,c\u cpp\u属性。json和updateincludePath

{
    "configurations": [
        {
            .
            .
            "includePath": [
                "${workspaceFolder}/**",
                "${default}"
            ],
            .
            .
            .
        }
    ],
  
  "version": 4
}

另外,我在微软C/C扩展的官方GitHub问题页面上问了同样的问题,最终找到了我上面提到的解决方案(但不是理想的)。

以下是有关详细信息的链接:https://github.com/microsoft/vscode-cpptools/issues/5843

 类似资料:
  • 我是Spring云和Spring后端开发的新手。我正在尝试用SpringCloudGateway开发一个简单的微服务。 Github链接到Discovery Server、Spring Cloud Api网关和用户微服务。令人惊讶的是,当我在Postman中执行API时,GET API起作用,但POST却不起作用。 我试着调试,但它并没有传到我的控制器上。我错过了什么?还是做错了?任何帮助或建议都

  • 问题内容: 我已经下载,解压缩并使用一些插件(值得注意的,EPIC,Clearcase,QuantumDB,MisterQ)设置了Eclipse 3.4.2。 现在,我在编辑Java项目时发现代码完成无法正常工作。如果我键入并按,则弹出窗口将显示“无默认提案”,底部的状态栏将显示“无可用完成”。 问题答案: 尝试还原 中的默认选项 你在此首选项屏幕中看到的数据类型的示例,但是不一定是你当前拥有的数

  • 问题内容: 使用Xcode 6 GM种子,我的代码完成已停止工作。前几天在工作。我试图让轻松的工作正常进行。我制作了一个Objc头文件,并将其分配为Swift类的头。 至此,我获得了一个Objective-c项目的代码完成。但是,不是Swift项目。 我尝试重新启动Xcode,制作一个新的空项目。 问题答案: 只需进入并 删除 文件夹的数据(派生数据),然后 重新启动 Xcode。

  • 我在用这个: 但它在聊天中显示为。 我还尝试了和,但都不起作用。 我做错了什么? 编辑:我找到了解决方案,请看下面我的答案。

  • 代码: 这段代码在本地运行良好,异常由catch块处理,我的代码继续执行,但当我在Jenkins上运行相同的代码时,catch块无法捕获异常。 日志:

  • 按下键时的示例输出不起作用: