2010-03-01 200 views
8

我有一個應用程序,它使用C#作爲前端,C++ DLL作爲邏輯部分。即使C#GUI存在,我也想從C++ DLL的控制檯屏幕上打印錯誤消息。請讓我知道如何做到這一點。從C++ DLL打印消息到控制檯

謝謝, Rakesh。

回答

8

您可以使用AllocConsole()創建控制檯窗口,然後寫入標準輸出。

如果您正在使用C或C++標準I/O功能(而不是直接Win32調用),還有你需要採取與標準輸出的C/C++標準庫的想法新的控制檯關聯的一些額外的步驟。 http://www.halcyon.com/~ast/dload/guicon.htm解釋你必須做什麼以及爲什麼,完整的代碼。

+0

嘿格雷格,請問您可以擴展使用AllocConsole()。任何鏈接供參考? – 2010-03-01 06:37:13

+0

我添加了一個指向AllocConsole()的MSDN文檔的鏈接。這很簡單。只需調用AllocConsole()爲您的應用程序創建一個控制檯窗口,並檢查返回值以確保它不會由於某種原因而失敗。 – 2010-03-01 21:38:19

+0

我用AllocConsole來創建一個控制檯窗口,但是沒有任何東西被打印在屏幕上。任何想法爲什麼發生這種情況? – 2010-03-02 08:58:08

12

可以在C++ DLL使用OutputDebugString的,然後執行DebugView除非應用程序從一個控制檯開始得到消息

+0

謝謝。完美工作,正是我需要的。我的意思是,真的,謝謝。 – Alyoshak 2012-07-12 16:08:31

+1

也謝謝我。對於其他人:傳遞一個簡單的字符串,做OutputDebugString(L「test」); – texnic 2014-07-23 14:22:23

+0

唉,我只有一個upvote來給這個答案。非常感謝! – Bjorninn 2015-10-06 12:56:58

4

,標準輸入,標準輸出,和標準錯誤甚至不會存在,使用例如任何企圖printf()將會失敗。要麼打開您自己的控制檯,要麼使用調試機制,比如前面提到的OutputDebugString()

0

如果處理COM/DCOM或任何其他ATL項目的DLL和服務EXE,您也可以使用以下代碼行以MessageBox窗口的形式打印診斷消息,作爲將消息打印到控制檯的替代方法:

MessageBox(NULL, L"Com Object Function Called", L"COMServer", MB_OK | MB_SETFOREGROUND);

實施例情況下,我已經使用這個包括_tWinmain功能,以及構造和析構跟蹤實例。