Печать сообщений на консоль из C ++ DLL - PullRequest
8 голосов
/ 01 марта 2010

У меня есть приложение, которое использует C # для внешнего интерфейса и C ++ DLL для логической части. Я хотел бы напечатать сообщения об ошибках на экране консоли из моей C ++ DLL, даже если присутствует C # GUI. Пожалуйста, дайте мне знать, как это сделать.

Спасибо, Ракеш.

Ответы [ 4 ]

14 голосов
/ 01 марта 2010

Вы можете использовать OutputDebugString в C ++ DLL, а затем выполнить DebugView , чтобы получить сообщения

9 голосов
/ 01 марта 2010

Вы можете использовать AllocConsole () , чтобы создать окно консоли и затем записать в стандартный вывод.

Если вы используете стандартные функции ввода-вывода C или C ++ (в отличие от прямых вызовов win32), вам нужно предпринять некоторые дополнительные шаги, чтобы связать новую консоль с идеей стандартной библиотеки C / C ++ о стандартном выводе. http://www.halcyon.com/~ast/dload/guicon.htm объясняет, что вы должны делать и почему, с полным кодом.

4 голосов
/ 01 марта 2010

Если приложение не запущено из консоли, stdin, stdout и stderr даже не будут существовать, и любая попытка использовать, например printf() потерпит неудачу. Либо откройте собственную консоль, либо используйте механизм отладки, такой как OutputDebugString(), предложенный ранее.

0 голосов
/ 01 июля 2015

Если вы имеете дело с DLL-файлами и служебными EXE-файлами, такими как COM / DCOM или любым другим проектом ATL, вы также можете использовать эту строку кода для распечатки диагностических сообщений в виде окон MessageBox в качестве альтернативы печати сообщений на консоль. :

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

Примеры случаев, когда я использовал это, включают функцию _tWinmain, а также конструкторы и деструкторы для отслеживания экземпляров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...