【问题标题】:C++ IntelliSense is pointing to an incorrect version of included libraryC++ IntelliSense 指向包含库的错误版本
【发布时间】:2020-06-07 20:12:46
【问题描述】:

我有一个C++ 静态库项目,它编译时没有任何错误,也不会在Error list 窗口中显示任何错误。所以一切似乎都正常。除了当我尝试打开源代码(CTRL + 左键单击库或库特定项)时,会打开不正确版本的文件。为什么?

详细说明。我的PC 上安装了CUDA 9.1CUDA 9.2CUDA 10.2。我的项目有以下CUDA Linker 配置:

  • 其他库目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64;%(AdditionalLibraryDirectories)

  • 其他依赖项:cudart.lib;%(AdditionalDependencies)

CUDA linkerCommand line 我有:

"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin\nvcc.exe" -dlink -o x64\Debug\Core3.device-link.obj -Xcompiler "/EHsc /nologo / Zi "-L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64" cudart.lib

CUDA C/C++Command line 我有:

所以,它看起来不错。但是在代码中,当我单击任何包含时 - 它们指向 9.2 源。示例:

#include <cuda.h> 
#include "cuda_runtime.h"
#include <device_launch_parameters.h> 

路径为:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\ v9.2 \include

此外,我还检查了环境变量。都好。还检查了.vcxproj 文件中使用了哪些props 文件。属性CUDA 10.2.props 无处不在。

所以我的问题是 - 为什么IntelliSence 仍然认为我使用的是旧版本的CUDA?更重要的是 - 我如何让他使用正确的 10.2 版本?

编辑 1: 在 cmets 中要求提供更多信息。包括目录 - 使用默认值。

变量检查:

【问题讨论】:

  • 您没有显示配置的包含目录 - 来自您的 VS 解决方案或直接来自您的 VS 安装。似乎其中之一指向 9.2 版本。
  • @Neywat 你能详细说明or directly your VS installation吗?我应该在哪里检查?关于第一个 - 我已经编辑了帖子并附加了包含目录配置,如果这就是你的意思。使用默认值。
  • VS installation,我指的是 options 对话框 > VC++ 目录。如果您的项目不覆盖路径,那么它们是相同的。对于您的项目,C/C++ item 或 CUDA C/C++ item 是否配置了其他包含路径?
  • @Neywat 按照惯例默认用于我在原始帖子中没有提到的地方。 :) 作为证明 - 请参阅编辑。我附上了来自项目设置的多张图片,包括您询问的这些。请检查。 附言。如果图片太多,stackoverflow 社区/mods 请不要禁止我..
  • 对不起,我在检查明显的:)。我想你试图删除智能感知数据库(几次救了我的命)。如果你使用预编译的头文件,也会导致奇怪的行为。

标签: c++ visual-studio cuda intellisense visual-studio-2019


【解决方案1】:

@Neywat 建议删除 IntelliSense 文件夹,并且成功了。

我不得不删除解决方案目录中的整个 .vs 文件夹。

问题仍然存在 - 这是一个已知问题吗?Microsoft 团队是否意识到了这一点?关于 .vs 文件夹生命周期的建议是什么?我们应该不时清理它吗?

【讨论】:

    猜你喜欢
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多