未处理的异常-如果/SUBSYSTEM参数发生更改,则访问冲突

Unhandled Exception - Access violation if /SUBSYSTEM parameter is changed

本文关键字:访问冲突 参数 异常 如果 SUBSYSTEM 未处理      更新时间:2023-10-16

我有一个应用程序,在其中我使用console来查看输出的一些值。现在,一些需求已经发生了变化,我在运行时不再需要console

我试图通过将Project Properties->Linker->System->Subsystem下的/SUBSYSTEM参数从Console切换到Windows来改变这一点,就像我对之前的事情所做的那样,它已经奏效了。

在这种情况下,它在mfc110u.dll中给我一个未处理的异常,因为对象无法实例化。

为什么会出现这种异常,否则我如何在运行程序的情况下关闭console?我使用VS2012作为开发环境。

如果您不想要控制台,请声明winmain。这是非unicode版本的

#include <windows.h>
#include <iostream>
#include <cstdio>
int main (int, char**);
// If we just start with main, we will always get a console window
int WINAPI WinMain (
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
) 
{
    int argc = __argc;
    char** argv = __argv;
#ifdef DEBUG
  // If we are running in debug mode, open a console window
    AllocConsole();
    freopen("conin$", "r", stdin);
    freopen("conout$", "w", stdout);
    freopen("conout$", "w", stderr);
#endif
    return main (argc, argv);
}
int main (
    int argc,
    char** argv
)
{
    MessageBox(NULL, "Whoo hoo", "It Works!!!", MB_OK);
    return 0;
}