代码编译问题
- C/C++ code
#include <stdio.h>#include <windows.h>int nCounter = 0;FILE *fp;bool FilterChar(char *pChar){ for(int i=0;i<31;i++) if(*pChar == "\n\r<>,/?\\{}[]();:\'\" =%^*#!`~+\0&\t"[i]) return true; return false;}bool IsGoodEmail(char *pEmail){ int a = strcspn(pEmail, "@"), b = strcspn(pEmail,"."), c = strlen(pEmail)-1; if(pEmail[0] == '@' || (a+1) == b) return false; if(!IsCharAlpha(pEmail[c])) pEmail[c] = '\0'; if((a < c) && (b > a) && (b < c)) return true; return false;}bool IsValidFile(char *pFile){ int x = 0; int nStrLen = lstrlen(pFile); char *pExt = new char[nStrLen]; ZeroMemory(pExt,nStrLen); bool bRet = false; for(int i = nStrLen;i>0;i--){ if(pFile[i] == '.'){ while(i<nStrLen){ pExt[x] = pFile[i]; x++;i++; } break; } } if(!lstrcmp(pExt,".txt") || !lstrcmp(pExt,".htm") || !lstrcmp(pExt,".html") || !lstrcmp(pExt,".cpp") || !lstrcmp(pExt,".h") || !lstrcmp(pExt,".php")) bRet = true; delete pExt; pExt = NULL; return bRet;}void ScanFile(char *lpszFile){ if(IsValidFile(lpszFile)) SetConsoleTitle(lpszFile); else return; HANDLE hFile = CreateFile(lpszFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(hFile != NULL || hFile != INVALID_HANDLE_VALUE) { DWORD dwFileSize = GetFileSize(hFile,NULL); if(dwFileSize != INVALID_FILE_SIZE) { char *lpszFileBuffer = new char[dwFileSize]; ZeroMemory(lpszFileBuffer,dwFileSize); DWORD dwRet = 0; ReadFile(hFile,lpszFileBuffer,dwFileSize,&dwRet,NULL); char *pEmail = new char[MAX_PATH]; ZeroMemory(pEmail,MAX_PATH); char *pData = lpszFileBuffer; unsigned int c = 0; do{ if(*pData == '@'){ while(!FilterChar(pData)) *pData--; *pData++; while(!FilterChar(pData)){ if(c < MAX_PATH-1){ pEmail[c] = *pData; c++; *pData++; } else break; } if(IsGoodEmail(pEmail)){ printf("%s\n",pEmail); fprintf(fp,"%s\n",pEmail);nCounter++; } ZeroMemory(pEmail,MAX_PATH); c = 0; } }while(*pData++); pData = NULL; delete lpszFileBuffer; CloseHandle(hFile); } CloseHandle(hFile); }}static bool ScanDirectory(char *lpszDirectory,DWORD dwSize){ HANDLE hFind; WIN32_FIND_DATA *fd = new WIN32_FIND_DATA; ZeroMemory(fd,sizeof(WIN32_FIND_DATA)); char * lpszBuffer; DWORD dwNewSize = 0; bool bStatus = true; DWORD dwActualSize = dwSize+3; char * lpszScanDir = new char[dwActualSize]; ZeroMemory(lpszScanDir,dwActualSize); wsprintf(lpszScanDir,"%s\\*",lpszDirectory); hFind = FindFirstFile(lpszScanDir,fd); if(hFind != INVALID_HANDLE_VALUE) { do{ if(fd->cFileName[0] != '.'){ dwNewSize = (dwSize + lstrlen(fd->cFileName) + 3); lpszBuffer = new char[dwNewSize]; ZeroMemory(lpszBuffer,dwNewSize); wsprintf(lpszBuffer,"%s\\%s",lpszDirectory,fd->cFileName); if(!ScanDirectory(lpszBuffer,dwNewSize)) ScanFile(lpszBuffer); delete lpszBuffer; } } while(FindNextFile(hFind,fd)); } else bStatus = false; FindClose(hFind); delete fd,lpszBuffer,lpszScanDir; return bStatus;}int main(int argc,char **argv){ char *lpszScanDir = new char[MAX_PATH]; ZeroMemory(lpszScanDir,MAX_PATH); char *savefile="d:\\邮件.txt";//保存文件目录 fp=fopen(savefile,"a"); SetConsoleTitle("Email Scanner v1.0 - By Smith"); printf("Email scanner v1.0\nBy Smith\n\nEnter directory to scan\nExample \"c:\" (without quotes)\n\n> "); scanf("%s",lpszScanDir); ScanDirectory(lpszScanDir,lstrlen(lpszScanDir)); delete lpszScanDir; SetConsoleTitle("Email Scanner v1.0 - By Smith"); printf("\nTotal emails found: %d ,save in file %s.\nPress escape to exit...",nCounter,savefile); fprintf(fp,"\nTotal emails found: %d\nPress escape to exit...",nCounter); while(!GetAsyncKeyState(VK_ESCAPE)) Sleep(10); fclose(fp); return 0;}
C:\>cl 1.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
1.cpp
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
/out:1.exe
1.obj
1.obj : error LNK2001: unresolved external symbol __imp__IsCharAlphaA@4
1.obj : error LNK2001: unresolved external symbol __imp__GetAsyncKeyState@4
1.obj : error LNK2001: unresolved external symbol __imp__wsprintfA
1.exe : fatal error LNK1120: 3 unresolved externals
编译不成功,高手这是怎么回事啊
有高手帮我编译个能用的吧 我发邮箱alongasd@126.com 谢谢
[解决办法]
你试试将user32.lib手动链接进去,附加依赖项里
[解决办法]
jackyjkchen@bupt.cn
工程整个发给我,我看看