обертывание приложения MFC (целевое мобильное устройство) для создания dll для использования в c # .NET для взаимодействия - PullRequest
1 голос
/ 21 января 2010

У меня есть приложение MFC для запуска на мобильном устройстве. Теперь этот код приложения нужно повторно использовать из C #. Я пытаюсь создать оболочки, DLL и импортировать эту DLL из c #.

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

Есть ли способ получить доступ к моему коду приложения из этой библиотеки.

Пожалуйста, помогите

1 Ответ

1 голос
/ 21 января 2010

Я предлагаю разделить часть этого кода в C ++ DLL (не библиотеку классов) и затем использовать атрибуты DllImport в C # для доступа к этим функциям (см. http://msdn.microsoft.com/en-us/library/26thfadc.aspx).. Затем вы все равно можете использовать эту DLL в своем приложении MFC. путем добавления зависимости проекта (сначала добавьте оба проекта в одно и то же решение). Таким образом, автоматически создается оболочка lib и связывается с приложением MFC.

Другое решение (но, возможно, даже больше работы) заключается в создании межпроцессного взаимодействия между вашим MFC-приложением и клиентом C #, открыв именованный канал или сокет TCP. В качестве протокола вы можете либо создать свой собственный (как мы это делали в нашей компании), либо выбрать что-то вроде XML-RPC, SOAP и т. Д. В качестве примера вы можете попытаться заставить gSOAP работать на вашем сервере MFC, а затем определить файл WSDL. и клиентский код C # будет автоматически сгенерирован из этого Visual Studio.

Другим решением является превращение части вашего приложения MFC в COM DLL. Тогда его могут использовать как клиенты MFC, так и клиенты C #. Но я не думаю, что это решение добавляет что-то большее, чем «обычное» решение DLL.

Извините, но я не знаю простого решения (или хотя бы одного, которое не требует много работы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...