Создать программу Windows с графическим интерфейсом, но использовать main() (в D)?
Возможно ли в Windows создать программу с графическим интерфейсом, у которой есть точка входа в main()? Как мне это сделать?
Я использую это для того, чтобы я хотел кроссплатформенное приложение с единой точкой входа.
1 ответ
Решение
- Напишите ваше заявление, используя
main()
и все вызовы GUI там, что вы использовали бы вWinMain
, Это создаст приложение с графическим интерфейсом и консольным окном. - Используйте инструмент Windows SDK
editbin /SUBSYSTEM:WINDOWS appname.exe
изменить флаг подсистемы в заголовке PE, чтобы Windows не создавала окно консоли автоматически. - Если вы хотите работать
stdout
для сообщения отладки или тому подобное, вы можете использоватьfreopen
направлятьstdout
в файл, илиAllocConsole
когда вы решите, что нужно консольное окно (например, после возникновения ошибки).
Кстати: этот поток указывает, что компилятор DMD предпочтет main()
над WinMain()
во всяком случае, если он находит оба.