обертывание приложения MFC Gui в DLL (или что-то еще) для взаимодействия .NET - PullRequest
0 голосов
/ 15 апреля 2009

звучит как ужасная идея? Да, я тоже так думал. Излишне говорить, что мне сказали, что я должен это сделать.

Положение: Старое графическое приложение C ++ на основе MFC, которое считывает и обрабатывает множество источников данных во внутренней структуре данных, прежде чем отображать их пользователю.

Проблема: Мне нужна эта структура данных в .NET, в XML подойдет.

Решение:

  1. Создайте функцию в приложении MFC, которая записывает структуру данных в большую строку XML (легко).
  2. dllexport эта функция (или COM?) (Как функция C ++ или C или как?)
  3. Скомпилируйте приложение MFC GUI в dll (как?).
  4. ???
  5. Ссылка на dll из .NET и P / Invoke для получения большой прибыли.

Это безумие? Можно ли скомпилировать библиотеку dll из приложения с графическим интерфейсом MFC, не меняя ее? Это ужасная идея? Каковы мои альтернативы? Я довольно потерянный.

Ответы [ 2 ]

1 голос
/ 15 апреля 2009

Я бы работал над извлечением конкретного кода бизнес-логики в приложении MFC и вставлял этот материал в DLL, а не пытался обернуть все приложение.

Возможно, вы делаете ложное предположение, что вам понадобится меньше усилий, чтобы превратить приложение MFC в DLL (в основном удалить весь код графического интерфейса, добавить основную библиотеку DLL и изменить процесс сборки для создания DLL), чем попытка изолировать код бизнес-логики и поместить его в новый проект DLL.

Чтобы обернуть GUI в виде DLL, вам потребуется довольно хорошее понимание зависимостей кода бизнес-логики и того, как он используется в GUI, так что вы можете просто вырезать этот материал.

0 голосов
/ 16 апреля 2009

Можете ли вы немного изменить источник MFC? Почему бы не добавить некоторые параметры командной строки, чтобы приложение выводило XML на вывод std вместо запуска графического интерфейса?

В CWinApp::InitInstance у вас есть доступ к параметрам командной строки путем наследования CCommandLineInfo.

В клиенте .Net запустите процесс и сохраните вывод.

...