我知道不应该在头文件中包含使用命名空间声明,因为它们使项目可用于整个项目,并且可能会产生错误的结果。但到目前为止,我一直无法找到有关头文件中是否允许“#using”指令的信息。我可以在头文件中使用它,就像在这个例子中一样吗?:
这是带有函数转发声明的头文件:
#using <System.dll>
System::Security::Cryptography::X509Certificates::X509Certificate2^ GetCertificate(int Index);
如果我不能,那么 X509Certificate2 所依赖的System.dll包含什么是workaroud?
答案 0 :(得分:0)
#using
指令完全与using namespace
关键字不同。它等同于本机C ++代码中使用的#include
指令。它告诉编译器从程序集元数据中加载类型定义。
不,你不应该使用它。在最近的VS版本中它很破碎,你在项目中使用的引用程序集的确切版本与.NET 4.0相比非常重要。当你得到wrong one时,从4.5开始致命。此外,System.dll总是在正确配置的C ++ / CLI项目中引用,因此再次使用它是没有意义的。
而是使用Project + Properties,Common Properties,References。并且一定要在启动新项目时使用CLR节点中的项目模板。