visual Assurance VS 2008将我的项目视为C++,而不是C++/CLI
visual Ensuring VS 2008 is treating my project as C++ rather than C++/CLI
我在Visual Studio 2008中使用本机C++。
一位同事写了一个图书馆,他把自己的一个班命名为interface
。这里有一个构造函数:
template <typename DtedInterface>
interface<DtedInterface>::interface (
std::string const& tleFile,
std::string const& dtedDir,
dted::DtedLevel const& dtedLevel,
double sw_latitude,
double sw_longitude,
unsigned int rows,
unsigned int columns )
: m_impl ( new interface_impl<DtedInterface> ( theFile, dtedDir, dtedLevel, sw_latitude, sw_longitude, rows, columns ) )
{}
让我担心的是,VisualStudio2008正在突出显示单词interface
作为关键字;interface
是C++/CLI中的关键字,但不是C++。这看起来不像是有效的C++/CLI,但对于本机C++来说是可以的。
看起来它们编译得很好,但我如何确保Visual Studio将其解释为C++而不是C++/CLI?在某些级别上,VS似乎将其视为C++/CLI。这只是一个关键词突出显示设置吗?
devenv.exe
,对于编译器为cl.exe
),作为单独的进程运行。IDE只是生成cl.exe
进程来执行实际的编译。
IDE在某个地方有一个关键字列表,只需"告诉"文本编辑器要突出显示哪些单词。它不是超级复杂的;没有必要。编译器拥有最终发言权,而不是语法高亮(或Intellisense)。
只要/clr
开关没有传递到cl.exe
进程,编译器就会将代码编译为本机C++(这是默认设置)。IDE只是输入源代码的文件路径,编译器作为命令行参数切换到cl.exe
进程。语法高亮显示与编译器如何解释代码无关。
如果您使用C++/CLI,代码将拒绝编译,所以只要您推送"build"并且它有效,那么您就知道您使用的是本机。还有用于CLR构建的预定义宏。
如果您确实需要验证它不是在编译托管C++,请查看项目属性,并检查配置属性->常规下的"公共语言运行时支持"设置。对于配置属性->C/C++->常规下的每个文件的属性,请检查"使用公共语言运行时支持编译"设置。如果所有这些都设置为"不支持公共语言运行时",则该项目不是用C++管理的。
相关文章:
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- C++/CLI System.AccessViolation在托管类中调用非托管函数时出现异常
- 是否可以在Linux上使用.Net Core 3.1创建C++/CLI代码的C#DLL
- C++ DLL(不是 CLI)是否可以调用 .NET Core 3.0 委托?
- VS2010 C++ 调试托管 (C++/CLI) DLL
- 如何将 C++/CLI 库链接到C++应用程序
- C++/CLI targetting .NET Core 3.1
- 模板函数签名在 C++/CLI 中解包
- C++/CLI 混合托管/本机 DLL 不起作用
- C++/CLI 和 C#/VB 与不安全和外部有什么区别?
- 是否有可能构建面向Linux和Windows的.Net Core C++ / CLI应用程序?
- DirectX 12 和 C++ CLI :无法使用IID_PPV_ARGS
- 如何为要在 C# 中使用的静态库创建 C++ 或 C++/CLI 包装器
- 将 C# 对象(包含静态对象成员)作为参数传递给 C++/CLI 程序
- C++/CLI -- 访问结构成员
- 如何将字符串从 C++/CLI 方法返回到调用它的非托管C++
- 如何将CLI类的函数指针作为参数传递给C++方法
- 用于LabView中使用的本机c++的c++/cli dll包装器
- C#WPF和C++/CLI以及C++在C++/CLI中添加外部库错误
- 在.NET Core 3.1中运行托管C++/CLI程序集时,映像格式错误