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':関数をオーバーロードできません

Windows764ビットコンピューターとVisualStudioBuildプラットフォームで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で、新しい「EMPTYプロジェクト」を作成します。「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 に答える