我一直在努力超过3个小时,但找不到解决方案。 一个简单的helloworld程序运行良好,我可以得到输出,
#include<iostream>
#include<string>
using namespace std;
int main(){
string s;
cout<<"hello world";
}
但对于My Sudoku Project,我有以下用户定义的标题 文件,SudokuSolver.h,Matrix.h,Cell.h,Pos.h,Error.h,Exception.h和 他们相应的.cpp文件。
ExampleProgram.cpp
使用这些头文件来解决数独。
(所有.h和.cpp文件都在同一个文件夹中。)
我已添加using namespace std;
,我将字符串包含为#include <string>
。
在每个头文件中,无论我在哪里使用string.h。但即使我在运行
fatal error: string: No such file or directory compilation terminated.
g ++ ExampleProgram.cpp SudokuSolver.h Cell.h Error.h Pos.h Matrix.h
当我将ExampleProgram.cpp 编译为
时 g++ -c ExampleProgram.cpp SudokuSolver.h
Cell.h Error.h Pos.h Matrix.h
我没有错误。
当我使用./a.out
运行ExampleProgram.cpp 时,我没有得到我的数独求解器的输出。相反,我得到了我之前运行的helloworld程序的输出。它显示我的ExampleProgram.cpp
未成功编译。但正如之前所说的
g++ -c ExampleProgram.cpp SudokuSolver.h
Cell.h Error.h Pos.h Matrix.h
不会出现任何错误。
这是我的输出:
[fosslab@fosslab SudokuSolver]$ g++ -c Error.h
[fosslab@fosslab SudokuSolver]$ g++ -c Exception.h
[fosslab@fosslab SudokuSolver]$ g++ -c Matrix.h
[fosslab@fosslab SudokuSolver]$ g++ -c Cell.h
[fosslab@fosslab SudokuSolver]$ g++ -c Pos.h
[fosslab@fosslab SudokuSolver]$ g++ -c SudokuSolver.h
[fosslab@fosslab SudokuSolver]$ g++ -c ExampleProgram.cpp SudokuSolver.h Excepti
on.h Cell.h Error.h Pos.h Matrix.h
[fosslab@fosslab SudokuSolver]$ ./a.out
hello world[fosslab@fosslab SudokuSolver]$
答案 0 :(得分:2)
首先,源文件中的头文件是包含。不要将它们添加到编译器的命令行。
其次,g ++的命令行参数“-c”告诉g ++不链接并生成可执行文件,但只生成一个目标文件。
你应该这样做:
$ g++ -c ExampleProgram.cpp
$ g++ ExampleProgram.o
或
$ g++ ExampleProgram.cpp
在上述两种情况下,您将获得一个新的“a.out”可执行程序。
如果你有几个源文件,那么编译它们而不是头文件:
$ g++ -c Error.cpp
$ g++ -c Exception.cpp
$ # etc...
$ g++ -c ExampleProgram.cpp
$ g++ Error.o Exception.o ... ExampleProgram.o
答案 1 :(得分:2)
我知道它已经很晚了,但我的回答可能会帮助那些面临这个问题的人。您很可能在系统上没有libstdc ++ - devel软件包。 请重新检查。我遇到了同样的问题,可以通过安装devel包来解决它。