8

我正在尝试执行我的第一个“Hello World!” 在 C++ 中。我使用的是 Windows XP,并且我已经安装了 cygwin,其中安装了 g++ C++ 编译器。我写了一个小 hello-world 程序,并保存在 hello.cpp 中。从命令提示符我写:

g++你好.cpp

但我得到:

'g++' 不是内部或外部命令、可运行程序或批处理文件。

我已经在我的 D:\programs\cygwin 中安装了 cygwin。我在 D:\cpp 中用我的 hello-world 文件创建了另一个目录。我的安装或路径似乎不太好,但我不知道是什么。我已经运行了 cygwin 的 exe 文件,并且在安装目录中我得到了所有必要的文件,我认为:bin 文件夹、lib、Cygwin.bat 等。

我已经阅读过,如果出现此类错误消息,我应该检查 cygwin1.dll 文件是否已复制到 Windows 的主文件夹中。这是 C:\WINDOWS 目录吗?我看过那里,我那里没有这样的文件。我在cygwin的bin文件夹中有cygwin1.dll:D:\programs\cygwin\bin。另外,如何检查命令的搜索路径中是否考虑了 bin 文件夹(D:\programs\cygwin\bin)?

我认为 hello-world 程序不应该包含任何语法错误,我只是复制了它。另外,当我写

g++ -v

我收到相同的错误消息:该命令无法识别。如果有人给我提示我应该看什么,我将不胜感激。谢谢你。

下面是 hello-world 程序的代码:

#include <iostream>
using namespace std;

int main() {
  cout <<"Hello World!"<<endl;
  return 0;
}

我已经安装了 g++,现在当我输入 g++ -v 时,我得到:Reading specs from: \d\cygnus\cygwin-b20\H-i586-cygwin32\bin..\lib\gcc-lib\i586-cygwin32\ egcs-2.91.57\specs gcc 版本 egcs-2.91.57 19980901(egcs-1.1 版本)

在 bin 目录中,我有 g++.exe 和 gcc.exe。我不明白为什么我在上面得到“gcc”而不是“g++”。我不知道这有多重要,但是当我尝试在 DOS 命令提示符下编译程序时收到错误消息:

g++你好.cpp

我得到:

hello.cpp:1: parse error before character 0357
hello.cpp: In function 'int main()':
hello.cpp:'cout' undeclared (first use this function)
hello.cpp: (Each undeclared identifier is reported only once
hello.cpp: for each function it appears in.)
hello.cpp: 'endl' undeclared (first use this function)

这是我尝试在 cygwin shell 中编译程序时得到的结果:

hello.cpp:1: parse error before character 0357
hello.cpp: In function 'int main()':
hello.cpp:'cout' undeclared (first use this function)
hello.cpp: (Each undeclared identifier is reported only once
hello.cpp: for each function it appears in.)
hello.cpp: 'endl' undeclared (first use this function)
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
g++.exe: hello.cpp: No such file or directory
g++.exe: No input files
4

12 回答 12

3

正如人们所说,检查路径。不要开始复制 cygwin DLL - 这不是必需的,以后可能会出现问题并且不会解决问题。

在设置 Windows PATH 变量(和其他变量)时,我发现这个小程序非常有用,而且比眯着眼看 MS 控制面板 aplet 更好。

编辑:似乎 OP 错误地没有安装 g++ - 对于我们所有人来说都是一个教训,他们首先回答了这个明显的问题 :-)

于 2009-03-02T16:27:16.857 回答
3

啊,我以为安装cygwin的时候就安装了g++。所以,在这种情况下,我实际上应该首先安装 g++,不是吗?

(然后重新启动)

于 2009-03-02T17:05:43.720 回答
2

我假设您在这里使用的是 Windows Shell。如果您从 cygwin Bash shell 调用编译器,则应为您设置所有路径。

于 2009-03-02T16:24:22.417 回答
2

几年前我写了一个关于这个的教程,这可能会有所帮助:

http://www.codeguru.com/cpp/misc/misc/compilerandpre-compiler/print.php/c8107__1/

你安装了g++吗?Cygwin 安装程序的默认设置未安装它。

于 2009-03-02T16:25:55.627 回答
2

确保它在路径上,或者您正在运行 bash shell cmd 提示符。

于 2009-03-02T16:44:52.740 回答
2

你确定你安装了g++?G++ 是 C++ 编译器,而不是 C 编译器。如果你只安装了 C 编译器,你会得到命令gcc而不是命令g++

于 2009-03-02T17:18:46.497 回答
1

确保它们 c:\cygwin\bin 在 PATH 中。

希望能帮助到你。

于 2009-03-02T16:22:31.657 回答
1

在 cygwin 中获取路径:

echo $PATH

这将使我们走上理解问题的道路。

编辑

下一个命令将告诉我们 cygwin 认为它应该在 Windows 中查找所有这些文件的位置

mount

包含 /usr/bin 的行是我们需要复制的行。

于 2009-03-02T16:28:02.923 回答
1

调出dos shell。

cd c:\cygwin\bin

输入 c++ 或 cpp

或执行目录命令查看内容。寻找 cpp 或 c++。

如果他们不在那里,你还没有下载它。

于 2009-03-02T17:10:41.837 回答
0

除了将其添加到路径(这将解决您的问题)之外,您可能还需要下载 make 和 dbg,它们也在开发路径上,但默认情况下未选中。确保选择“保留”作为整体安装选项,这样它就不会重新下载所有内容。

于 2009-03-02T16:29:28.440 回答
0

正如其他人提到的,这可能是路径问题,因此您需要查看环境变量 PATH。为此,请右键单击My Computer并单击“属性”。转到“高级”选项卡,然后单击“环境变量”按钮。从这里,查看您提到的路径是否包含在 PATH 变量中。如果不是,请使用您在此处看到的相同语法添加它们以分隔路径(我认为它是路径之间的分号或冒号。)

编辑:啊,我看到你已经这样做了(比我的帖子快了几秒钟。)我认为你现在需要做的就是重新启动。

于 2009-03-02T17:02:46.957 回答
-1

尝试创建一个新文件并自己输入代码,而不是复制和粘贴它。您的代码中可能有一个非法字符,在您选择的编辑器中可能看不到。

于 2009-03-07T00:01:04.063 回答