Создание приложения c # winforms для использования в качестве dll из неуправляемого приложения mfc - PullRequest
3 голосов
/ 02 сентября 2010

Мне интересно, как бы я мог преобразовать существующее приложение c # winforms в библиотеку классов, а затем вызвать его из приложения mfc. Есть какие-нибудь ссылки, как это сделать? Я пробовал поискать в Google, но, кроме того факта, что ему потребуется атрибут ComVisible, установленный в true, я не нашел много информации.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 02 сентября 2010

В свойствах проекта visual studio изменить тип вывода на библиотеку классов . Это сделает ваш проект скомпилированным в dll. Также установите для атрибута comvisible значение true . Таким образом, будет сгенерирована удобная оболочка и файл tlb, который вы можете использовать из своего проекта mfc.

Также я думаю, что следующая ссылка является очень хорошим и подробным объяснением того, как COM Interop работает в .Net

http://www.codeproject.com/KB/COM/cominterop.aspx

1 голос
/ 02 сентября 2010

Существует образец MSDN , который охватывает помещение пользовательского элемента управления Winforms в приложение или диалоговое окно MFC. В дополнение к коду это должно показать вам настройки проекта, которые вам понадобятся.

1 голос
/ 02 сентября 2010

Посмотрите на инструмент regasm.exe , поставляемый с .NET.Он сгенерирует необходимые записи реестра (и, необязательно, файл .tlb), которые позволят компонентам COM получить доступ к вашей сборке.

0 голосов
/ 02 сентября 2010

Как только вы получите эту сборку правильно, вам нужно будет запустить ее правильно. Основная проблема может заключаться в правильном родительском оформлении оконных форм из неуправляемых окон, в основном заставляя управляемые формы жить внутри того, что начиналось как неуправляемое приложение. Если вы не используете WPF в качестве моста пользовательского интерфейса между вашим неуправляемым кодом и управляемыми формами, вам придется выполнить эту работу самостоятельно. Вы можете зайти в эту тему в Google для получения дополнительной информации, на данный момент у вас нет ссылки на эту полезную информацию.

...