Страница 2 из 2
Добавлено: 16 май 2007, 16:02
i_van
ajkj3em писал(а):i_van писал(а):ura писал(а):A.EXE это что, процесс который запущен или подразумевается что он является тоже DLL по сути? Исходники его есть?
Да это процесс. Исходники есть.
тогда все тривиально - добавьте __declspec(dllexport) перед нужной
функцией и дальше ее можно будет найти из других модулей через
LoadModule / GetProcAddress
Теперь depends видит мою функцию (адрес).
Однако смущает, что для поиска исрользуется только имя. A если a_func() - перегружаемая?
Или я вижу только адрес какой-нибудь виртуальной таблицы в которой несколько версий a_func()?
Или же мне надо использовать С-конвенцию: extern "C"?
Добавлено: 17 май 2007, 22:04
ura
Важная часть этого дела это то, что процесс A загружен и работает.
Вызывать функцию из мертвого процесса смысла как я понимаю нет, поскольку ничего не проинициализировано. Процесс A это процесс в себе, каким образом там можно вызвать функцию напрямую из работающего процесса?
Вот факт что он может загрузить DLL и надо использовать как ключевой. Надо писать подходящую DLL и выставлять из нее COM или .NET remoting или там MSMQ интерфейс наружу ну или по простому через сокеты или RPC.
Добавлено: 17 май 2007, 22:16
Marmot
ura писал(а):Надо писать подходящую DLL и выставлять из нее COM или .NET remoting или там MSMQ интерфейс наружу ну или по простому через сокеты или RPC.
Наконец-то я вижу пример правильного enterprise подхода к проблеме. А то развели тут всякие depends , __declspec и прочую лабуду...
.NET remoting это SOAP, я так понимаю?
Добавлено: 17 май 2007, 22:34
ajkj3em
Marmot писал(а):ura писал(а):Надо писать подходящую DLL и выставлять из нее COM или .NET remoting или там MSMQ интерфейс наружу ну или по простому через сокеты или RPC.
Наконец-то я вижу пример правильного enterprise подхода к проблеме.
это пять .. типа сама проблема пока не понятна, но правильный подход к ее решению уже есть :-)
это как у китайцев в моей прошлой конторе -
I don't know what the bug was, but I have already fixed it.
Добавлено: 17 май 2007, 22:36
ajkj3em
ura писал(а):Важная часть этого дела это то, что процесс A загружен и работает.
да не факт. может там функция, которая числа на делители раскладывает за О(n) :-)
Добавлено: 18 май 2007, 07:05
ura
Marmot писал(а):ura писал(а):Надо писать подходящую DLL и выставлять из нее COM или .NET remoting или там MSMQ интерфейс наружу ну или по простому через сокеты или RPC.
Наконец-то я вижу пример правильного enterprise подхода к проблеме. А то развели тут всякие depends , __declspec и прочую лабуду...
.NET remoting это SOAP, я так понимаю?
.NET Remoting это аналог DCOM для для .NET, может работать через TCP сокет или через HTTP. Кстати SOAP тоже не полохая фича, т.е. в терминах .NET это будет Web Services, что позволит выставить фичи этого a.exe наружу как Web Sevices, подход более универсальный поскольку платформно независимый со стороны вызывающего клиента.
Добавлено: 18 май 2007, 21:24
Azazello
i_van писал(а):Однако смущает, что для поиска исрользуется только имя. A если a_func() - перегружаемая?
Или я вижу только адрес какой-нибудь виртуальной таблицы в которой несколько версий a_func()?
Или же мне надо использовать С-конвенцию: extern "C"?
Если хотите задать экспортируемым функциям свои имена, то используйте EXPORTS в .def файле. __declspec(dllexport) - это самая примитивная форма EXPORTS.