【发布时间】:2014-06-24 20:37:04
【问题描述】:
我有一个用 C# 编写的个人项目,但由于一些问题和平台依赖性,我决定用 C++ 重写程序。
该项目包含数十个类和数千行代码。我想知道是否有办法至少生成正确的头文件,以及只有方法存根的 cpp 文件。
我知道直接生成代码是不可能的,但是只生成程序的骨架会有很大帮助。
我的 C# 项目是 Visual Studio 2013 项目,我想将其转换为原生 c++,因此不包含 CLI。
我想做的是:
- 列表项
- 获取项目中的每个类。
- 根据类生成头文件。
- 使用基于类的方法存根生成 .cpp 文件。
【问题讨论】:
-
您尝试做的事情似乎不太可能。 C# 具有 CLI 依赖项,因此如果没有它,任何直接转换为本机代码都是不切实际的。
-
这似乎根本不可行,但我最好的尝试是尝试使用一些逆向工程工具从您的代码中提取 UML 模型,然后使用代码生成工具从那个模型。我没有将其作为答案发布,因为我无法告诉任何支持此工作流程的特定工具,如果有的话(我认为应该有)。
-
是的,这个 UML 反向生成似乎是个好主意,这与我最初的想法非常接近。
-
您最好查看第三方选项,这些选项将使 .net 代码在不同平台上工作。想到了单声道。
-
我认为 C#-reflection 恰好适合这种工作:使用反射枚举所有类、它们的方法和成员,并以 C++ 格式写出版本。可能有一些类型翻译得不好,但它肯定会给你一个起点。
标签: c# c++ code-generation