1

我需要在应用程序启动期间创建一个没有控制台窗口或(任何其他窗口)的 exe 应用程序。

我为此尝试了以下方法:

  1. 使用 Visual Studio 2010,将 Win32 控制台应用程序创建为空项目。
  2. 在项目中添加了头文件“stdafx.h”
  3. 在项目中添加了一个 cpp 文件并添加了以下代码。
  4. 项目设置是默认的视觉标准。

    #include "stdafx.h"
    #include <windows.h>  
    #include "TlHelp32.h"
    #include <iostream>
    #include <string>
    int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
    {
    
            return 0;
    }
    

上面的代码编译得很好。

但是,如果我将字符集更改为“使用 Unicode 字符集”,则会出现以下编译错误。

错误 C2731:“WinMain”:函数无法重载

我在 Windows 7 64 位计算机和 Visual Studio Build 平台上构建应用程序作为 x64。

在此先感谢您的帮助。

4

3 回答 3

1

是的,当您使用有效的 UNICODE 构建时,入口点将 Unicode 字符串作为命令行参数。所以这需要一个不同的声明:

  int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                        LPWSTR lpCmdLine, int nShowCmd)

或者您可以使用#include <tchar.h>它以任何一种方式工作,这些天没有太多指向它:

  int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                         LPTSTR lpCmdLine, int nCmdShow)
于 2012-10-24T15:05:54.187 回答
0

创建 Windows 服务而不是控制台应用程序。

于 2012-10-25T15:55:53.990 回答
0

在 Visual Studio 中,创建一个新的“空项目”。添加一个名为“main.cpp”的新源文件。使用以下模板(假设您要使用 Unicode 构建):

/************
   main.cpp
************/

#define UNICODE 1

#include <windows.h>

int APIENTRY wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                       LPWSTR lpCmdLine, int nShowCmd)
{
    // Process Return Codes
    const int SUCCESS=0, FAILURE=1;


    return SUCCESS;
}
于 2015-06-24T19:54:44.023 回答