Miguel Altamirano Morales Ответов: 1

Можно ли включить приложение C#, разработанное с помощью VS 2015, в собственное приложение MFC C++ (win 32)?


У моего клиента есть нативное (Win32) приложение deskstop, разработанное с VS 2010, они хотят прекратить работу нескольких его модулей. Новая функциональность этих модулей была предоставлена нам поставщиком программного обеспечения в настольном приложении C#, разработанном совместно с VS 2015.

Я должен выяснить, можно ли объединить эти новые характеристики в старое приложение, но я не хочу кодировать все снова. Я очень обеспокоен различными версиями IDE. Может быть, мне придется конвертировать старый в VS 2015. Я не думаю, что смогу сделать наоборот.

Я имею в виду включить приложение C# в качестве модуля для приложения MFC C++.

Приложение C# указывает на платформу 4.5 Net framework.

Я ищу через сеть, чтобы увидеть, могу ли я получить то, что хочет мой клиент. Если нет, я должен выяснить, что должно быть лучшим решением, которое я могу дать, чтобы решить эту проблему, может быть, снова закодировать приложение C# в C++, а не наоборот, MCF-это очень большое приложение, и я еще не очень хорошо знаю этот язык. Но я был бы очень признателен, если бы кто-нибудь помог мне достичь этого или посоветовал, где найти документацию или примеры предыдущих и решенных проектов, подобных этому.

Заранее спасибо.

Что я уже пробовал:

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

Это было очень трудно для меня, может быть, я не должен был принимать этот проект, но мне действительно нужны деньги.

Garth J Lancaster

Я думаю, вам нужно определить это "включить приложение C# в качестве модуля для приложения MFC C++" немного лучше - если вы имеете в виду "поделиться кодом", то это действительно сложно, см. ответ Филиппа Мори - если вы имеете в виду запустить приложение C# из приложения MFC, то это не так уж сложно - вы просто используете CreateProcess со стороны c++. Очевидно, что если вам нужно поделиться данными, которые приложение c# создает в приложении c++, вам нужно быть осторожным, но это не невозможно ... пожалуйста, немного уточните свои "требования" (используйте зеленый виджет "улучшить вопрос" в нижней части вашего вопроса)

Miguel Altamirano Morales

Большое спасибо, Гарт, пожалуйста, извините меня, я не говорю по-английски на 100%, иногда я не могу ясно объясниться.
вот такая ситуация: у моего клиента есть нативное (Win32) приложение deskstop, разработанное с VS 2010, они хотят прекратить работу нескольких его модулей. Новая функциональность этих модулей была предоставлена нам поставщиком программного обеспечения в настольном приложении C#, разработанном совместно с VS 2015.
Моя цель-объединить эти новые характеристики в старое приложение, но я не хочу кодировать все снова. Я очень обеспокоен различными версиями IDEs. Может быть, мне придется конвертировать старый в VS 2015. Я не думаю, что смогу сделать обратное.

Ответ Филиппа Мориса кажется очень подходящим для этого. Но мне придется искать каждую точку на нем.

Philippe Mori

Это несколько трудно понять. Похоже, что C++ уже имеет всю функциональность, но клиент не хочет, чтобы некоторые из них были удалены. Затем кажется, что вы вернули эту функциональность и хотите вернуть ее обратно в приложение. Таким образом, почему бы вам не создать 2 приложения. Один, который включает в себя все, а другой, который не включает в себя пару модулей?

Кроме того, если вы добавите обратно эту функциональность в C#, у вас возникнет та же проблема, что и у приложения, включающего модули, которые клиент не хочет?

Вероятно, вам было бы лучше иметь все проекты в VS 2015. Требуется ли это? Трудно сказать, так как это зависит от того, на какой фреймворк нацелено ваше приложение и зависит ли код от новых функций компилятора.

Miguel Altamirano Morales

Функциональность C++ не была удалена, потому что я все еще ищу, что делать, и работает нормально, но клиент больше не хочет его использовать. Он работает с внешним устройством, и это будет изменено. К сожалению, я не могу дать больше подробностей.
Да, я говорил об использовании этих двух приложений отдельно, но все захваченные данные должны поступать в одну и ту же базу данных, зашифрованную, и в другую, в формате XML, чтобы быть отправленными в интернет через другое приложение. В любом случае, может быть, это лучший вариант, я его проанализирую.
Большое вам спасибо, Филипп.

1 Ответов

Рейтинг:
7

Philippe Mori

Если вы хотите включить какую-то часть приложения C# в приложение C++, то одной из возможностей было бы сделать что-то подобное:

1) Создайте библиотеку из приложения C#, чтобы создать библиотеку DLL.
2) Если вам все еще нужно приложение C#, храните только минимальный материал в самом приложении (EXE).
3) Создайте сборку смешанного режима (C++/CLI) для целей взаимодействия.
4) из этой сборки обратитесь к сборке C#, созданной на шаге № 1.
5) Добавьте сборку C++/CLI в проект приложения C++
6) напишите код в сборке смешанного режима для соединения кода C# и C++.

Это предполагает экспертный уровень...


Miguel Altamirano Morales

Вчера я написал для вас комментарий, Филипп, будучи благодарным за ваш ответ и сделав еще пару вопросов.

Я не вижу этого сообщения на странице, должен ли я предполагать, что оно не было получено (или я его не отправил ?)

Philippe Mori

Если чего-то там нет, я этого не получал, так что вы, вероятно, его не посылали...