Изпращане на информация между неуправляван C++ DLL и управляван C# UI

Добре, така че сценарият е както следва.

Application1 има способността да зарежда и извършва повиквания към неуправляван C++ DLL.

Искам да напиша друг потребителски интерфейс на C#, за да улесня живота си.

След това искам DLL да може да изпраща информация до изпълнимия файл на C#, а изпълнимият файл на C# да може да изпраща информация до DLL.

Информацията, която се предава напред-назад, не е сложна. Това ще бъде просто низ.

Някакви идеи как може да стане това.


person CathalMF    schedule 28.11.2013    source източник
comment
какво опитахте / търсихте ли вече в този сайт? Почти съм сигурен, че това е покрито от съществуващи въпроси.   -  person TooTone    schedule 28.11.2013
comment
DLL обикновено няма собствен живот, както процесът. Трябва да направите извикване на експортирана функция, за да я накарате да направи нещо. Или го накарайте да върне нещо. Само аргументи и връщани стойности на функцията.   -  person Hans Passant    schedule 28.11.2013


Отговори (1)


Това трябва да отговори на въпроса ви. По принцип най-лесните опции са Named Pipes за комуникация на една и съща машина и Sockets за различни машини.
Актуализиране
След по-добро съображение, отговорът зависи от „Кой контролира?“ във вашия сценарий.
1. Ако изпълнимият файл на C# е отговорен за извикването на вашата неуправляема DLL и изпращане/извличане на информация, тогава трябва да използвате Извикване на платформата.
2. Ако искате вашият неуправляван DLL да решава кога да изпраща данни към приложението, тогава първо от всичко трябва да трансформирате своя DLL в пълноценно приложение и след това да преминете към междупроцесна комуникация.

person Yurii    schedule 28.11.2013
comment
Сигурен ли си в този отговор? Тръбите и гнездата са за междупроцесна комуникация. OP извършва комуникация в процеса. - person TooTone; 29.11.2013
comment
@TooTone, предполагам, че не разбрах напълно въпроса, така че актуализирах отговора, благодаря за съвета. - person Yurii; 29.11.2013