2013-11-28 74 views
1

好,所以情況如下。在非託管C++ DLL和託管C#UI之間發送信息

Application1能夠加載和調用非託管C++ DLL。

我想在C#中編寫另一個用戶界面,使我的生活更輕鬆。

然後,我希望DLL能夠將信息發送到C#可執行文件,並使C#可執行文件能夠將信息發送到DLL。

來回傳遞的信息並不複雜。它只是一個字符串。

關於如何完成這些的任何想法。

+0

你有什麼試過/你在這個網站上搜索過嗎?我很確定這已經被現有問題所覆蓋。 – TooTone

+1

DLL通常並不像自己的一個過程那樣擁有自己的生命。你必須調用一個導出的函數才能讓它執行某些操作。或者讓它返回一些東西。只是參數和函數返回值。 –

回答

1

This應該回答你的問題。基本上最簡單的選項是命名管道在同一臺機器上進行通信,並且插座爲不同的機器。
更新
經過更好的考慮後,答案取決於'誰在控制?'在你的場景中。
1.如果C#可執行文件負責調用您的非託管DLL併發送/檢索信息,那麼您應該使用Platform Invoke
2.如果您希望非託管DLL決定何時將數據發送到應用程序,那麼首先應該將您的DLL轉換爲完整的應用程序,然後使用interprocess communication

+0

您確定嗎?管道和插座用於進程間通信。 OP正在進行進程間通信。 – TooTone

+0

@TooTone,我想我沒有完全理解這個問題,所以我更新了答案,謝謝你的提示。 – Yuriy