![为什么我在终端中编译 C++ 程序时会出现这些未定义的错误?](https://linux22.com/image/1043642/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E5%9C%A8%E7%BB%88%E7%AB%AF%E4%B8%AD%E7%BC%96%E8%AF%91%20C%2B%2B%20%E7%A8%8B%E5%BA%8F%E6%97%B6%E4%BC%9A%E5%87%BA%E7%8E%B0%E8%BF%99%E4%BA%9B%E6%9C%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E9%94%99%E8%AF%AF%EF%BC%9F.png)
答案1
您应该使用 进行编译g++
,gcc
编译 C 程序。要安装 的所有必需软件包g++
,请sudo apt-get install build-essential
在终端上执行,然后要编译您的程序,请执行g++ -g main.cpp -o Main
。
答案2
您应该g++
始终将其用于 C++ 程序!
那是因为:
因此它们是不同的编译器,因此它们是不同的软件包。主要区别如下:
gcc
将编译:*.c
/*.cpp
文件分别作为 C 和 C++。g++
将会编译:*.c
/*.cpp
文件,但它们都将被视为 C++ 文件。- 如果您使用
g++
链接目标文件,它会自动链接到 std C++ 库(gcc
不执行此操作)。 gcc
编译 C 文件的预定义宏较少。gcc
编译*.cpp
和g++
编译*.c
/*.cpp
文件有几个额外的宏。
答案3
我找到了问题所在。我没有找到具体的解决方案,但我找到了一个解决方法。显然这些类没有被链接。所以我把所有的类都放到主文件中,它完美地工作了!