包括一个C++;c#文件中的头文件 我把一个托管C++项目转换成C语言。C++项目包括常数C++头文件,它是项目外部存在的外部依赖项。 在新创建的C++文件中,有没有办法包含这个C++头文件?我不想在C++的文件中重新定义这些常数,因为客户机的更改将在C++头文件上进行。 < P>不幸的是,这是不可能的,因为C编译器不理解如何处理.h文件。即使有,在.NET中使用非作用域变量声明(常量或其他)仍然是非法的

包括一个C++;c#文件中的头文件 我把一个托管C++项目转换成C语言。C++项目包括常数C++头文件,它是项目外部存在的外部依赖项。 在新创建的C++文件中,有没有办法包含这个C++头文件?我不想在C++的文件中重新定义这些常数,因为客户机的更改将在C++头文件上进行。 < P>不幸的是,这是不可能的,因为C编译器不理解如何处理.h文件。即使有,在.NET中使用非作用域变量声明(常量或其他)仍然是非法的,c#,visual-c++,managed,C#,Visual C++,Managed,您必须手动转换该文件,或者按照Joachim Pileborg的评论所述,构建一个实用程序来自动将其转换为C代码。不可能包含它 你真的有两个选择 < LI>复制它到托管层,并将它与C++头同步。 在运行时读取并解析它,并在需要这些符号的C#部分中使用反射 正如其他人所指出的,您可以自动化第一个文件。如果您有大量的头文件,您可以查看SWIG: 这将从C/C++头文件生成C#文件 有关更多信息,请参见: 结果令人印象深刻!但是命名更像C++,比C语言风格更…但这是意料之中的…这可能是不可能的。虽

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

不可能包含它

你真的有两个选择

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

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

如果您有大量的头文件,您可以查看SWIG:

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

有关更多信息,请参见:


结果令人印象深刻!但是命名更像C++,比C语言风格更…但这是意料之中的…

这可能是不可能的。虽然你可以编写一个工具,它使用这个头文件并生成C语言源文件,当构建C++解决方案时,我编写了一个自定义工具,用一个预构建动作来更新C文件,当C++文件已经改变了一些代码需要共享C和非托管C++代码之间的常量时。效果很好。@JoachimPileborg:该工具名为SWIG;)如何与C++头同步?手动?我可能会编写一个简单的工具来读取头文件,并发出一个C文件,其中包含所需的任何声明。@jay_t-请看David Heffernan的评论-正是这样。我遇到了SWIG…而且似乎,嗯,这里需要的是重量级的…:)