Создание окна консоли из DLL для целей отладкиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Создание окна консоли из DLL для целей отладки

Сообщение Anonymous »

Я реализовал DLL (C++, VisualStudio, Windows), расширяющую функции другой программы (далее - основная программа).

Внутреннюю архитектуру я не знаю основная программа, за исключением того, что это программа с графическим интерфейсом и сама не использует консольные окна.

DLL создает консольное окно и использует его для вывода вывода в целях отладки (std::cout/ wcout).

Взаимодействие DLL и основной программы происходит через некоторые экспортированные функции в DLL. Взаимодействие работает хорошо, но в ряде случаев основные программы выходят из строя. В некоторых случаях это происходит, когда я просто закрываю окно консоли, нажав "x".

Вопрос: видите ли вы какие-либо потенциальные риски использования окна консоли с помощью DLL, и следует ли мне закрывать ее? окно консоли, когда функции DLL завершают работу? Может быть, вы видите в такой схеме явное нарушение дисциплины работы с консолью?


Код создания и закрытия окна консоли:
bool CreateConsole() {

HWND ConsoleWindowHandle = GetConsoleWindow();
if (ConsoleWindowHandle != NULL)
// console ia already created
return true;

BOOL res = AllocConsole();
if (res == 0) {
DWORD LastError = GetLastError();
return false;
}

freopen_s(&ConsoleStream, "CONOUT$", "w", stdout);

setlocale(LC_ALL, "...");

return true;
}

void CloseConsole() {
BOOL ok = FreeConsole();
ConsoleWindowHandle = 0;
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... gging-aims
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»