#在头文件中使用指令
#using directive in header file
我知道不应该在头文件中包含 using namespace 声明,因为它们使项目对整个项目可用,这可能会产生不好的结果。但到目前为止,我一直无法找到有关头文件中是否允许使用“#using”指令的信息。我可以像这个例子一样在头文件中使用它吗?:
这是我的带有函数前向声明的头文件:
#using <System.dll>
System::Security::Cryptography::X509Certificates::X509Certificate2^ GetCertificate(int Index);
如果我不能,包含 System.dll 的变通方法是什么?X509Certificate2 依赖于它?
#using
指令的作用完全 不同于 using namespace
关键字。它等同于本机 C++ 代码中使用的 #include
指令。它告诉编译器从程序集元数据中加载类型定义。
不,你不应该使用它。它在最近的 VS 版本中非常糟糕,自 .NET 4.0 以来,您在项目中使用的参考程序集的确切版本非常重要。当你获得 wrong one 时,从 4.5 开始致命。此外,System.dll 始终在正确配置的 C++/CLI 项目中引用,因此再次使用它没有任何意义。
改为使用项目 + 属性、通用属性、引用。并确保在开始新项目时使用来自 CLR 节点的项目模板。
我知道不应该在头文件中包含 using namespace 声明,因为它们使项目对整个项目可用,这可能会产生不好的结果。但到目前为止,我一直无法找到有关头文件中是否允许使用“#using”指令的信息。我可以像这个例子一样在头文件中使用它吗?:
这是我的带有函数前向声明的头文件:
#using <System.dll>
System::Security::Cryptography::X509Certificates::X509Certificate2^ GetCertificate(int Index);
如果我不能,包含 System.dll 的变通方法是什么?X509Certificate2 依赖于它?
#using
指令的作用完全 不同于 using namespace
关键字。它等同于本机 C++ 代码中使用的 #include
指令。它告诉编译器从程序集元数据中加载类型定义。
不,你不应该使用它。它在最近的 VS 版本中非常糟糕,自 .NET 4.0 以来,您在项目中使用的参考程序集的确切版本非常重要。当你获得 wrong one 时,从 4.5 开始致命。此外,System.dll 始终在正确配置的 C++/CLI 项目中引用,因此再次使用它没有任何意义。
改为使用项目 + 属性、通用属性、引用。并确保在开始新项目时使用来自 CLR 节点的项目模板。