我必须执行需要将Borland C++代码迁移到C#的项目, 为了顺利迁移代码,我需要遵循哪些重要步骤? 并请提出任何类型的提示和技巧?将Borland C++移植到C#
1
A
回答
3
这实际上意味着一个完整的重写。如果我是你,我会尝试C++/CLI而不是C#。这样,您可以逐步重写代码并将其转换为托管代码。
需要考虑的事情,无论您迁移到C#或C++/CLI:
- 与清晰的接口模块分区软件(使用的多层架构,MVC,...)。如果每个分区都是COM对象,那么甚至可以尝试仅迁移部分并在.NET中使用COM对象。
- 确定你所依赖的库,并检查如何在.NET取代他们
- 确定要在其中使用指针,并检查如何在C++
- 检查要使用RAII对象改变这个代码,并找到一个在.NET中获得相同结果的方式。
我不能给你更详细的建议,因为我不知道你想迁移什么类型的程序以及原因。
1
虽然这不是真的要迁移代码吗?你所做的基本上是用语言b(C#)重写一个存在于语言a(本例中为C++)的系统。这两种语言没有那么多共同点来促进简单的机械翻译(C#< - > Java机械翻译更容易),并且取决于C++代码的现代程度,您可能无法翻译某些习语直。
我的一个合理大小的项目的方法是编写一个“交叉编译器”的语言,允许轻松的文本处理(我上次使用红宝石)。这个交叉编译器应该能够机械地将大约80%的代码翻译成目标语言中几乎可以编译的东西。这也使您能够识别需要(很多)程序员注意的代码区域,因为您必须采用现有代码并在C#中编写功能等效代码。不要忘记,对于这个翻译工具,您还需要编写能够将头文件和实现文件中必需的代码组合在一起的代码。取决于C++代码的组织程度,这是一项不重要的任务。
1
如果你只是想移动到.NET,然后考虑使用C++/CLI。如果你真的想转向C#,那么我建议不使用自动迁移路径,而是转向C++/CLI后,在C#中进行新的开发,并有计划将现有代码从C++移到C#一个强大的测试环境来验证随着时间的推移所做的改变。
但是,如果您只需执行一次大的迁移,那么您可以考虑移植到C++/CLI来构建托管程序集,并使用其中一个disassmble-IL-to-C#工具来自动化该过程。我坚决反对这样做 - 但这是你的时间和项目,而不是我的。
相关问题
- 1. 将Borland C++ Builder移植到Qt
- 2. 将C++ Builder移植到Qt
- 3. 将C/C++程序移植到Android中
- 4. 将组件移植到C/C++?
- 5. 将Visual C++项目移植到C#
- 6. 将C++数组移植到C#数组
- 7. 将C++游戏移植到目标C
- 8. 移植C++到C# - 模板
- 9. 移植C#到Android
- 10. 将移植函数从Python移植到C++
- 11. 从C移植到actionscript
- 12. 从VB.net移植到C#
- 13. 将C#中的TripleDESCryptoServiceProvider移植到PHP
- 14. 将C++项目移植到Android
- 15. 将C Winforms项目移植到WPF
- 16. 如何将C++联盟移植到Julia
- 17. 将项目从C#移植到Java
- 18. PV函数和将VB6移植到C#
- 19. 将POSIX C代码移植到windows中
- 20. 将Python程序移植到C
- 21. 将代码从Matlab移植到C++
- 22. va_copy - 移植到Visual C++?
- 23. Borland C++到Cygwin C++:TThreads pthreads?
- 24. 将Windows平台C++移植到POSIX(Linux)C++ - WSAGetLastError()
- 25. 将C#CryptoSys辅助3DES加密移植到Objective-C CommonCrypto问题
- 26. 将c/C++代码移植到VxWorks中的问题
- 27. 有没有人将Xerces C++和Xalan C++移植到iPhoneOS上?
- 28. 将C++移植到C++/CLI很困难吗?
- 29. 将文件预处理代码从C移植到C#
- 30. 我想将简单的C++回显服务器移植到C#
非常感谢Tobias ...它的一个图像处理项目,用于膀胱扫描及其客户想法,用C#,C++/CLI重写整个代码似乎更好选择 – 2009-06-17 06:35:00