Запуск приложений C++ and C#
От: WSN Россия  
Дата: 22.11.10 07:03
Оценка:
Здравствуйте!

Есть старый код на C++, который был написан в Borland'e.
Новый код пишется на С# в MSVS 2008.
Надо из старого кода создать приложение, написанное на шарпах.
Причем, хотелось бы взаимодействовать с запущенным приложением. Не хотелось бы рассматривать вариант запуска по COM'у.
Подскажите, какие есть варианты решения задачи (примеры кода были бы очень полезны).
Пока в голове только взаимодействие через стандартные виндовые сообщения(но еще пока не смотрел как это можно реализовать).

Спасибо за любой ответ.

С уважением, Иван
запуск приложений c++ c#
Re: Запуск приложений C++ and C#
От: Кодёнок  
Дата: 22.11.10 07:53
Оценка:
Здравствуйте, WSN, Вы писали:

WSN>Причем, хотелось бы взаимодействовать с запущенным приложением. Не хотелось бы рассматривать вариант запуска по COM'у.


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

WSN>Пока в голове только взаимодействие через стандартные виндовые сообщения(но еще пока не смотрел как это можно реализовать).


WM_COPYDATA, пайпы, сокеты и т.д. Передать массив байт из одного в другое не проблема, проблема — маршалинг/сериализация (как упаковывать сложные данные в этот массив байт и читать оттуда назад), которые могут обернуться в тонны черновой работы кодерам.
Re: Одно из решений
От: WSN Россия  
Дата: 22.11.10 08:29
Оценка: +1
Подсказал один авторитетный программист:

1. захостить CLR в приложении на С++. Это как-то несложно через COM делается. Google "Host CLR"
2. реализовать в твоём exe-шнике COMVisible, Dual-ный класс с необходимыми точками входа.
void ShowForm();
void HideForm();
void Dispose();
void Load(string path);
void LoadStream(string);
void Select(string ids);
3. создать домен в CLR хосте, загрузить туда твою exe-сборку, создать объект клсасса, и вызывать у него методы через IDispatch

Вот нашел про хостинг
http://blogs.msdn.com/b/dsui/archive/2010/08/19/launching-wpf-application-using-clr-hosting-from-c-application.aspx
буду разбираться.

Надеюсь на продолжение диалога.

С уважением, Иван.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.