Я реализовал 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
Создание окна консоли из DLL для целей отладки ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1734200087
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;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79280758/creating-a-console-window-from-a-dll-for-debugging-aims[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия