Можно ли смешивать управляемый и неуправляемый C ++ / MFC в одной DLL? - PullRequest
2 голосов
/ 11 июня 2010

Ранее у нас было программное обеспечение в приложениях MFC (VC6), VB6 и C #, которые должны были вызывать один и тот же механизм, написанный на C ++ (и MFC).Двигатель требует C ++ для скорости.В то время мы решили использовать COM в качестве интерфейса, потому что все три могли использовать его с наименьшим количеством проблем при сортировке и т. Д.

Наше приложение MFC устарело, и мы недавно решили сбросить VB6, так чтоОсталось только C #.

Мы можем просто оставить движок COM как есть, но было бы неплохо уйти от регистрации COM и т. д. и иметь управляемый интерфейс для работы.Регистрация COM иногда вызывает проблемы с поддержкой, если что-то не так с машиной пользователя.

Возможно ли иметь dll с существующим неуправляемым C ++ / MFC и интерфейсом .NET внешнего интерфейса?

Ответы [ 2 ]

3 голосов
/ 11 июня 2010

У вас может быть C ++ / CLI DLL, которая использует классы MFC для внутреннего использования.Одним приятным преимуществом создания DLL в смешанном режиме с C ++ / CLI является то, что вы можете использовать собственный C ++ практически в любом месте внутри DLL (следуя правилам C ++ / CLI) и «это просто работает».

Цель здесьоднако следует обеспечить хорошие, чистые управляемые оболочки, которые можно вызывать из вашего приложения на C #.

При этом вы, скорее всего, захотите избегать использования MFC для любых элементов пользовательского интерфейса.Хотя возможно размещать содержимое MFC в C # и наоборот, это часто проблематично - вам лучше просто инкапсулировать движок C ++ (критичные по времени операции) и устаревший код в красивые, чистые управляемые оболочки, используя C ++ / CLI.

0 голосов
/ 11 июня 2010

C ++ / CLI может выполнять оба действия.

...