将MFC Gui应用程序包装到用于.NET互操作的DLL(或其他)中

时间:2009-04-15 04:11:06

标签: dll mfc interop

听起来像个可怕的想法?是的我也这么认为。不用说我告诉我必须这样做。

情况: 旧的基于MFC的C ++ gui应用程序,在将大量数据源显示到内部数据结构之前,将其显示给用户。

问题: 我需要.NET中的数据结构,用XML做。

解决方案:

  1. 在MFC应用程序中创建一个函数,将数据结构写入一个大的XML字符串(简单)。
  2. dllexport这个函数(或COM?)(作为C ++或C函数还是什么?)
  3. 将MFC GUI应用程序编译为dll(如何?)。
  4. ???
  5. 从.NET和P / Invoke方法引用dll以获取丰厚利润。
  6. 这是疯了吗?是否可以从GUI MFC应用程序编译DLL库而无需更改它?这是一个可怕的想法吗?我有什么选择?我很丢失了。

2 个答案:

答案 0 :(得分:1)

我将致力于在MFC应用程序中提取特定的业务逻辑代码并将这些内容粘贴到DLL中,而不是试图完成整个应用程序。

你可能会在这里作出一个错误的假设,它将花费你更少的努力将MFC应用程序包装为DLL(基本上删除所有GUI代码,添加DLL主程序并修改构建过程以生成DLL),而不是孤立业务逻辑代码并将其放入新的DLL项目的努力。

要将GUI作为DLL包装起来,您需要非常好地理解业务逻辑代码的依赖关系以及GUI如何使用它,因此您可以将这些东西剪掉。

答案 1 :(得分:0)

您可以稍微更改MFC源吗?为什么不添加一些命令行参数以使应用程序将XML吐出到std输出而不是启动GUI?

CWinApp::InitInstance中,您可以inheriting CCommandLineInfo访问命令行参数。

从.Net客户端启动流程并捕获输出。