Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows C++;GUI应用程序 我目前正在从Linux到Windows移植我的C++ Qt5/CFALE应用程序。在linux中启动应用程序时,我看到了UI和所有ok。在windows上,首先启动黑色终端,然后从终端启动我的应用程序。如何在没有黑色控制台的情况下启动应用程序?它不漂亮_C++_Windows_Visual Studio_Cmake_Qt5 - Fatal编程技术网

Windows C++;GUI应用程序 我目前正在从Linux到Windows移植我的C++ Qt5/CFALE应用程序。在linux中启动应用程序时,我看到了UI和所有ok。在windows上,首先启动黑色终端,然后从终端启动我的应用程序。如何在没有黑色控制台的情况下启动应用程序?它不漂亮

Windows C++;GUI应用程序 我目前正在从Linux到Windows移植我的C++ Qt5/CFALE应用程序。在linux中启动应用程序时,我看到了UI和所有ok。在windows上,首先启动黑色终端,然后从终端启动我的应用程序。如何在没有黑色控制台的情况下启动应用程序?它不漂亮,c++,windows,visual-studio,cmake,qt5,C++,Windows,Visual Studio,Cmake,Qt5,我正在使用MSVC cmake生成器和visual studio 2013 express 谢谢大家! 为创建WIN32应用程序编辑CMakeLists.txt IF(MSVC) SET(OPTIONS WIN32) ENDIF(MSVC) ADD_EXECUTABLE(${APP_NAME} ${OPTIONS} ${HEADER_FILES} ${SOURCE_FILES} } 编辑main.cpp以使用wWinMain并将输入参数转换为argc,argv

我正在使用MSVC cmake生成器和visual studio 2013 express


谢谢大家!

为创建WIN32应用程序编辑CMakeLists.txt

IF(MSVC)
    SET(OPTIONS WIN32)
ENDIF(MSVC)

ADD_EXECUTABLE(${APP_NAME} ${OPTIONS}
    ${HEADER_FILES}
    ${SOURCE_FILES}
    }
编辑main.cpp以使用wWinMain并将输入参数转换为argcargv

#ifdef _MSC_VER
#   include <windows.h>
#   include <shellapi.h>
#endif

/// ... some code

#ifdef _MSC_VER
INT WINAPI wWinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPWSTR, INT)
{
    UNREFERENCED_PARAMETER(hInst);
    UNREFERENCED_PARAMETER(hPrevInstance);

    int argc;
    char** argv;
    {
        LPWSTR* lpArgv = CommandLineToArgvW( GetCommandLineW(), &argc );
        argv = (char**) malloc( argc*sizeof(char*) );
        int size, i = 0;
        for( ; i < argc; ++i )
        {
            size = wcslen( lpArgv[i] ) + 1;
            argv[i] = (char*) malloc( size );
            wcstombs( argv[i], lpArgv[i], size );
        }
        LocalFree( lpArgv );
    }

#else
int main(int argc, char *argv[])
{
#endif

    QGuiApplication a(argc, argv);

    /// ... some code

    int code = a.exec();

#ifdef _MSC_VER
    {
        int i = 0;
        for( ; i < argc; ++i ) {
            free( argv[i] );
        }
        free( argv );
    }
#endif

    return code;
}
\ifdef\u MSC\u VER
#包括
#包括
#恩迪夫
/// ... 一些代码
#ifdef硕士学位
INT WINAPI wWinMain(HINSTANCE hInst、HINSTANCE hPrevInstance、LPWSTR、INT)
{
未引用的_参数(hInst);
未引用的_参数(HPPreInstance);
int-argc;
字符**argv;
{
LPWSTR*lpArgv=CommandLineToArgvW(GetCommandLineW(),&argc);
argv=(char**)malloc(argc*sizeof(char*);
整数大小,i=0;
对于(;i
WIN32
参数添加到应用程序名称后的
Add_executable
中。黑色终端表示您已使用控制台子系统构建了程序。只需使用GUI子系统构建程序即可。如果您有标准的
main
,则由于您使用的是Microsoft工具,因此必须告诉inker使用您的标准main,使用选项
/entry:mainCRTStartup
(如果我正确调用了entry函数名)。这可能是通过CMake以一种非常简单的方式完成的。请查看,但不要听取任何建议开始#if ing and WinMain ing和其他诸如此类的蠢事。除非你特别喜欢。好的。我尝试将
wWinMain
替换为
main
。如果你链接到qtmain,你就不需要弄乱main.cpp。这是Qt5:A的标准C++ +代码>主< /COD>函数总是足够的。为了避免控制台窗口,OP应该简单地指定GUI子系统。如何处理QT和CGub和东西,以便它与不同的编译器和系统一起工作,只是看它,可能阅读文档。