4

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

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

4

3 回答 3

5

不可能包括它。

你真的有两个选择

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

正如其他人所指出的,您可以自动化第一个。

于 2013-08-01T14:22:22.770 回答
2

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

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

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

结果令人印象深刻!但命名更像 C++,而不是 C# 风格......但这是意料之中的......

于 2013-08-01T14:28:26.177 回答
0

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

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

于 2013-08-01T14:21:25.090 回答