gpt4 book ai didi

c++ - 将 MFC/ATL 代码转换为 Windows 窗体应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:20 25 4
gpt4 key购买 nike

我有大量的 MFC/ATL 程序代码,想在 Windows 窗体应用程序中使用。 “转换”此代码的最简单方法是什么,以便它在启用/clr 的情况下进行编译并找到基本类,例如CObject、CString、CFile 和模板?

最佳答案

不需要做太多的“转换”,您只需启用/clr 并编译即可。会有构建错误,但数量不会很大。

这是一个不应该轻易做出的决定。。一旦你越过/clr 阈值,你就牺牲了一些东西:

  • 构建性能变得更差,尤其是链接。您不能增量链接 C++/clr 项目。

  • 一个额外的加载层被添加到您的 .Exe 或 .Dll 中。您必须注意初始化的顺序,尤其是静态的。与 VS2005 相比,情况好多了,但仍有问题。我有一个无法正确卸载的/clr DLL 项目,我一直无法弄清楚原因。此类问题的一个症状是您无法在退出调试时获得内存泄漏检测转储。

  • 向项目添加功能时,您可以选择托管实现或 native 实现。如果您选择对项目中其他地方本地完成的事情进行管理,您必须选择,我是否去修改旧的实现?

  • 跨越托管原生阈值对性能和调试有影响。

  • 异常处理变得更加复杂。

我推荐一种更有针对性的方法,而不是在整个项目上打开/clr 开关。让您的大型图书馆保持原生。创建混合模式/clr Bootstrap /包装程序。这种“瘦代理”提供了访问本地库的好处,同时保持了本地库的稳定性和性能。

如果您的 native 库中有对话框(或更糟的是 SDI/MDI View ,请参阅 here),则连接显示器可能会很棘手。但这是值得的。

关于c++ - 将 MFC/ATL 代码转换为 Windows 窗体应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/658026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com