【发布时间】:2016-06-15 14:24:13
【问题描述】:
我有一个包含多个项目的解决方案。
- Project1 是一个 C++/CLI 混合模式项目。
- Project2 是一个支持 CUDA 的 C++/CLI 混合模式项目(CUDA 编译器用于 *.cu 和 *.cuh 文件)。
Project2 通过 Project2 的属性中的Common Properties->References 接口包含 Project1。 一切都编译得很好;但是,智能感知将 project2 的代码中对 project1 的任何引用突出显示为错误。具体来说,我收到以下类型的消息。
在我的 project2 中的 *.h 文件中
#pragma once
namespace Project2
{
class TypeInProject2
{
property Project1::TypeInProject1^ obj
{
Project1::TypeInProject1^ get();
void set(Project1::TypeInProject1^ value);
};
//"Project1" is underlined in red
//IntelliSense: name followed by '::' must be a class or namespace
};
}
我可以通过在 project1 的标头中添加一个包含来使智能感知感到高兴,但这会导致重新定义 project1 的所有类并引发编译错误。
在 C++/CLI 项目选项中我应该知道哪些怪癖可以让智能感知感到高兴吗?
更新:我应该补充一点,有时一切正常。但是在退出 VS13 然后重新打开项目后,所有的智能感知错误都会再次出现。
【问题讨论】:
-
没有明显的原因。间接的,IntelliSense 解析器确实需要来自已编译 Project1 程序集的元数据来完成其工作。如果该程序集还不存在,或者已经过时,那么它不可避免地会被难住。快速重新编译应该可以解决这样的问题。
-
重新编译/重新加载任何一个项目都不能解决它。我明确指出 project2 是一个带有 CUDA 的 C++/CLI 项目。如果不包括 CUDA 编译器,我从来没有遇到过这个问题。
-
有人编辑了我的问题并删除了 CUDA 标签,但我认为 CUDA 支持是这里的关键——过度热心的管理员。
-
我删除了 CUDA 标签,因为从表面上看,这似乎与 CUDA 编程或 CUDA 没有任何关系。这似乎是关于智能感知和 Visual Studio 的问题(我不是一个过分热心的管理员,我是回答 CUDA 标签上大部分问题的人)。在这里帮帮我。
标签: visual-studio visual-studio-2012 cuda c++-cli intellisense