我有几个 c++ 实用程序,我想将它们移植到 dot net。我想知道是否有用于将 c++ 应用程序移植到 c# 的工具?
我想任何自动化工具都会弄乱任何代码,所以也许,我也应该问这是否是个好主意?
我有几个 c++ 实用程序,我想将它们移植到 dot net。我想知道是否有用于将 c++ 应用程序移植到 c# 的工具?
我想任何自动化工具都会弄乱任何代码,所以也许,我也应该问这是否是个好主意?
当然,这是一个热闹的市场。从 C++ 到 C# 可以为您提供一些可以干净编译的东西。让它真正发挥作用需要逐行,“哦,天哪,我明天要开枪”的努力。YMMV。
这应该是一个评论。但我没有足够的凭据发表评论。这与您的问题并不完全相关。我认为它对你有用。
更好的问题是,为什么您只是移植工作代码而不获得附加值(即新功能)?这种努力几乎肯定会比你预期的更难,而且需要的时间更长。更好的是,使用 .Net 的许多互操作功能从 C# 调用您的 c++ 代码。专注于在 C# 中添加新功能,但不要浪费时间移植工作代码。
我的公司Semantic Designs有一个从 C++ 转换为 C# 的工具。它处理从 C++(数据/类声明、可执行语句)到 C# 的转换核心语言结构。翻译工具基于DMS Software Reengineering Toolkit。
它需要自定义来处理将外来构造(COM 调用、您的自定义 API 等)转换为 C#。您可能找到的任何工具都需要这种定制;没有现成的工具可以实际解决您的一整套具体情况。
C++/CLI 编译器怎么样,它从 C++ 代码生成 .NET 程序集。最终,您将希望重新设计入口点以接受 .NET 类型(例如System::String
,而不是 classic char *
),但是通过不使用 C#,您将更快地进入 .NET。C++/CLI 和 C# 之间也有自动转换,但只有在 C++ 代码经过 .NET 化之后(前面提到的转换为System::String
、generic<typename T> System::Collections::Generic::List
等)