2011-08-04 46 views
0

我有一個不能更改的非託管dll(C++)。
我怎樣才能從這個DLL到我的C#GUI項目的STDOUT結果? 例如DLL有虛空這樣的:在C#GUI項目上重定向stdout + stderr

__declspec(dllexport) void PrintMsg(); 

void PrintMsg() 
{ 
cout << "Some text" << endl ; 
} 

我覺得這個解決方案Redirect stdout+stderr on a C# Windows service,但所有重定向數據寫入文件,我需要的標準輸出recive沒有保存到輸出文件,最好的選擇得到輸出變量。

如果可能,告訴我如何。

謝謝。

+1

這與C++和VB.NET有什麼關係? –

+0

對不起,我原諒這個解決方案http://stackoverflow.com/questions/5510285/c-net-gui-application-native-library-console-stdout-redirection-via-anonymo 非常適合我的理想方式,但工作只有一次,並沒有回答爲什麼:( – user497447

+0

Seth,我有一個非託管的DLL流媒體股票價格和主程序編寫.net – user497447

回答

0

我相信你應該可以打電話給CreateFile()並將它傳遞給你的應用程序(NOT FILENAME)來創建一個「設備」。實際上你必須做兩次,一次是「寫入」,一次是「讀取」,然後使用SetStdHandle並將stdout重定向到「寫入」句柄。然後,您應該可以使用「閱讀」句柄來讀取發送到stdout的所有內容。我從來沒有嘗試過,所以你必須準確地查找如何製作任意通信「設備」。

相關問題