初学者一枚!写了一个内存映射程序,程序报错,请各位大神给看看

菜鸟一枚!写了一个内存映射程序,程序报错,请各位大神给看看!
nt _tmain(int argc, _TCHAR *argv[])
{
//TCHAR:_TCHAR,UNICODE:wchar_t,MBCS:char//字符串定义
//TCHAR:_T(""),UNICODE:L"",MBCS:""//字符串赋值

_TCHAR strMsgLog[MAX_PATH] = _T("");      //日志信息

//设定控制台颜色高亮白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_INTENSITY | 
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);


    if ((argc > 1) && ((*argv[1] == _T('-') || (*argv[1] == _T('/')))))
    {
//TCHAR:_tcsicmp(),MBCS:mbsicmp(),UNICODE:wcsicmp()
//TCHAR:_tprintf(),MBCS:printf(),UNICODE:wprintf()
if (_tcsicmp(_T("install"), argv[1] + 1) == 0)
        {
WritetoConsole(_T(">>This is the service install mode !"),0);

        }
        else if (_wcsicmp(_T("remove"), argv[1] + 1) == 0)
        {
WritetoConsole(_T(">>This is the service remove mode !"),0);


        }
else if (_wcsicmp(_T("regedit"), argv[1] + 1) == 0)
{
WritetoConsole(_T(">>This is the service regedit mode !"),0);

}
        else if (_wcsicmp(_T("debug"), argv[1] + 1) == 0)
        {
//此函数的第三个参数采用默认值可以省略
WritetoConsoleWithMode(_T(">>This is running with debug mode !"),0);



        }
    }
    else//以服务方式启动
    {


    }
/***************************************************************************\
*函数名称 CreateFile
*函数功能 创建文件内核对象,其句柄保存于hFile
*参数列表 见下面的注释
*输入参数 见下面的注释
*输出参数 none
*返回值 返回文件句柄hFile

\***************************************************************************/
    HANDLE hFile=CreateFile(
                         _T("FileN"),                        //IpFileName
                             GENERIC_READ|GENERIC_WRITE,        //dwDesiredAccess
                             FILE_SHARE_READ|FILE_SHARE_WRITE,  //dwShareMode
                             NULL,                              //IpSecurityAttributes
                             OPEN_ALWAYS,                       //dwCreationDisposition
                             FILE_ATTRIBUTE_NORMAL,             //dwFilagsAndAttributes
                             NULL                               //hTemplateFile
   );

if( hFile==INVALID_HANDLE_VALUE )
   { 
cout<<"没有成功打开文件";
return false;
   }


/***************************************************************************\
*函数名称 CreateFileMapping
*函数功能 创建文件映射内核对象,句柄保存于hFileMapping
*参数列表 见下面的注释
*输入参数 见下面的注释
*输出参数 none
*返回值 返回文件句柄hFile

\***************************************************************************/
    
HANDLE hFileMapping=CreateFileMapping( 
_T("hFile"),                    //HANDLE hFile物理文件句柄
NULL,                           //lpFileMappigAttributes安全设置
PAGE_READWRITE,                 //flProtect
0,                              //dwMaximumSizeHigh
0x4000000,                      //dwMaximumSizeLow
NULL                            //lpName
  );

   if(hFileMapping==NULL)
   {  
   cout<<"没有成功创建文件句柄";
   return false;
   }

/***************************************************************************\
*函数名称 MapViewOfFile
*函数功能 创建文件映射内核对象,句柄保存于pvFileAddr
*参数列表 见下面的注释
*输入参数 见下面的注释
*输出参数 none
*返回值 返回文件句柄pvFileAddr

\***************************************************************************/
LPVOID pvFileAddr=MapViewOfFile(
                             hFileMapping,
 FILE_MAP_WRITE,
 0,
 0x4000000,
 0
                        );
/***************************************************************************\
*函数名称
*函数功能 释放映射内存
*参数列表 见下面的注释
*输入参数 见下面的注释
*输出参数 none
*返回值

\***************************************************************************/

       UnmapViewOfFile(pvFileAddr);      
           CloseHandle(hFileMapping);
       CloseHandle(hFile);

/***************************************************************************\
*函数名称 DeleteFile
*函数功能 删除指定的缓存文件。
*参数列表 LPCWSTR strCacheFileFullPath
*输入参数 LPCWSTR strCacheFileFullPath 删除的缓存文件的完整路径。

*输出参数 none
*返回值 BOOL    成功返回TRUE,失败返回FALSE。

\***************************************************************************/
 DeleteFileW(_T("FileN")) ;
    return 0;
}



下面是报错:
LINK : error LNK2001: 无法解析的外部符号 _mainCRTStartup
1>F:\CPP_TN_BUF\trunk\Debug\CPP_TN_Buffer.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>
1>生成失败。


我是想写一个控制台程序,之前查了一些网上类似问题的回答,我推断应该是main的问题,但是我不知道怎么解决,希望大神们帮忙写一下,我学习学习,另外希望推荐一本关于这方面细节的书,我自己学习一下!谢谢各位了!
------解决思路----------------------
新建Windows Console Application空项目,添加该test.cpp到项目中。
#include <windows.h>
#include <tchar.h>
#include <string.h>
#include <stdio.h>
void WritetoConsole(TCHAR *s,int) {
    _tprintf(s);_tprintf(_T("\n"));
}
void WritetoConsoleWithMode(TCHAR *s,int) {
    _tprintf(s);_tprintf(_T("\n"));
}
int _tmain(int argc, _TCHAR *argv[])
{
    //TCHAR:_TCHAR,UNICODE:wchar_t,MBCS:char//字符串定义
    //TCHAR:_T(""),UNICODE:L"",MBCS:""//字符串赋值

    _TCHAR strMsgLog[MAX_PATH] = _T("");      //日志信息

    //设定控制台颜色高亮白色
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
            FOREGROUND_INTENSITY 
------解决思路----------------------

            FOREGROUND_RED 
------解决思路----------------------
 FOREGROUND_GREEN 
------解决思路----------------------
 FOREGROUND_BLUE);


    if ((argc > 1) && ((*argv[1] == _T('-') 
------解决思路----------------------
 (*argv[1] == _T('/')))))
    {
        //TCHAR:_tcsicmp(),MBCS:mbsicmp(),UNICODE:wcsicmp()
        //TCHAR:_tprintf(),MBCS:printf(),UNICODE:wprintf()
        if (_tcsicmp(_T("install"), argv[1] + 1) == 0)
        {
            WritetoConsole(_T(">>This is the service install mode !"),0);

        }
        else if (_tcsicmp(_T("remove"), argv[1] + 1) == 0)
        {
            WritetoConsole(_T(">>This is the service remove mode !"),0);


        }
        else if (_tcsicmp(_T("regedit"), argv[1] + 1) == 0)
        {
            WritetoConsole(_T(">>This is the service regedit mode !"),0);

        }
        else if (_tcsicmp(_T("debug"), argv[1] + 1) == 0)
        {
            //此函数的第三个参数采用默认值可以省略
            WritetoConsoleWithMode(_T(">>This is running with debug mode !"),0);



        }
    }
    else//以服务方式启动
    {


    }
/***************************************************************************\
*函数名称   CreateFile
*函数功能   创建文件内核对象,其句柄保存于hFile
*参数列表   见下面的注释
*输入参数   见下面的注释
*输出参数   none
*返回值     返回文件句柄hFile

\***************************************************************************/
    HANDLE hFile=CreateFile(
                                 _T("FileN"),                        //IpFileName
                                 GENERIC_READ
------解决思路----------------------
GENERIC_WRITE,        //dwDesiredAccess
                                 FILE_SHARE_READ
------解决思路----------------------
FILE_SHARE_WRITE,  //dwShareMode
                                 NULL,                              //IpSecurityAttributes
                                 OPEN_ALWAYS,                       //dwCreationDisposition
                                 FILE_ATTRIBUTE_NORMAL,             //dwFilagsAndAttributes
                                 NULL                               //hTemplateFile
                           );

    if( hFile==INVALID_HANDLE_VALUE )
       {
        _tprintf(_T("没有成功打开文件\n"));;
        return 1;
       }


/***************************************************************************\
*函数名称   CreateFileMapping
*函数功能   创建文件映射内核对象,句柄保存于hFileMapping
*参数列表   见下面的注释
*输入参数   见下面的注释
*输出参数   none
*返回值     返回文件句柄hFile

\***************************************************************************/

    HANDLE hFileMapping=CreateFileMapping(
                                                _T("hFile"),                    //HANDLE hFile物理文件句柄
                                                NULL,                           //lpFileMappigAttributes安全设置
                                                PAGE_READWRITE,                 //flProtect
                                                0,                              //dwMaximumSizeHigh
                                                0x4000000,                      //dwMaximumSizeLow
                                                NULL                            //lpName
                                          );

   if(hFileMapping==NULL)
   {
       _tprintf(_T("没有成功创建文件句柄\n"));
       return 2;
   }

/***************************************************************************\
*函数名称   MapViewOfFile
*函数功能   创建文件映射内核对象,句柄保存于pvFileAddr
*参数列表   见下面的注释
*输入参数   见下面的注释
*输出参数   none
*返回值     返回文件句柄pvFileAddr

\***************************************************************************/
    LPVOID pvFileAddr=MapViewOfFile(
                                     hFileMapping,
                                     FILE_MAP_WRITE,
                                     0,
                                     0x4000000,
                                     0
                                    );
/***************************************************************************\
*函数名称   
*函数功能   释放映射内存
*参数列表   见下面的注释
*输入参数   见下面的注释
*输出参数   none
*返回值     

\***************************************************************************/

           UnmapViewOfFile(pvFileAddr);
           CloseHandle(hFileMapping);
           CloseHandle(hFile);

/***************************************************************************\
*函数名称   DeleteFile
*函数功能   删除指定的缓存文件。
*参数列表   LPCWSTR strCacheFileFullPath
*输入参数   LPCWSTR strCacheFileFullPath    删除的缓存文件的完整路径。

*输出参数   none
*返回值     BOOL    成功返回TRUE,失败返回FALSE。

\***************************************************************************/
    DeleteFile(_T("FileN")) ;
    return 0;
}

------解决思路----------------------
顶楼上,建议创建空项目,一些特定的项目对main函数的参数有不同的要求。