Печать сообщений на консоль из C ++ DLL

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

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

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

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

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

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

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

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

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