在c#文件中包含C ++头文件

时间:2013-08-01 14:13:19

标签: c# visual-c++ managed

我正在将托管c ++项目转换为C#项目。 C ++项目包含一个常量C ++头文件,它是项目外部的外部依赖项。

在新创建的C#文件中,有没有办法包含这个C ++头文件?我不想在C#文件中重新定义这些常量,因为客户端的更改将发生在C ++头文件中。

3 个答案:

答案 0 :(得分:3)

不可能包含它。

你真的有两个选择

  • 为托管图层复制它,并将其与C ++标头保持同步。
  • 在运行时读取并解析它,并在需要这些符号的C#部分中使用反射。

正如其他人所说,你可以自动化第一个。

答案 1 :(得分:2)

如果你有大量的头文件,你可以看看SWIG:http://www.swig.org/

这将从C / C ++头文件生成C#文件。

有关详细信息,请参阅:http://www.swig.org/Doc2.0/SWIGDocumentation.html#CSharp

结果令人印象深刻!但是命名比C#风格更像C ++ ......但这是预期的......

答案 2 :(得分:0)

不幸的是,不可能,因为C#编译器不理解如何处理.h文件。即便如此,在.NET中使用无范围的变量声明(常量或其他)仍然是非法的。

您必须手动转换文件,或者如Joachim Pileborg的评论中所述,构建一个实用程序,将其自动转换为C#代码。