在 Windows 中有两种程序:控制台程序和窗口程序。对于控制台程序,系统在进程启动期间分配并附加其控制台。
对于 Windows 程序,这不会发生,因此 stdout、stderr 等无处可去。Windows 程序仍然可以在其代码中显式分配 ( AllocConsole()
) 和附加 ( AttachConsole()
)(最多一个)控制台。所以你可能会尝试在调试版本中这样做。您不应该在发布(生产)构建中这样做,因为 DLL 通常不应该这样做。
我猜rundll32.exe
是Windows应用程序。