这不是我正在处理的实际代码,而是我为了解我做错了什么而编写的示例代码。所以我有三个文件 main.cpp、favourite.cpp 和 favourite.h 。我正在尝试编译 main.cpp 但出现了一些奇怪的错误。
//main.cpp 文件
#include <iostream>
#include "favourite.h"
using namespace std;
int main()
{
favNum(12);
}
//favourite.cpp 文件
#include "favourite.h"
#include <iostream>
using namespace std;
void favNum(int num)
{
cout << "My Favourate number is " << num << endl;
}
//favourite.h文件
#ifndef FAVOURITE_H
#define FAVOURITE_H
void favNum(int num);
#endif
所有文件都在同一个文件夹中,我通常像 g++ main.cpp 一样编译它,我不确定是否需要不同地编译它,因为我正在使用自定义头文件。
最佳答案
如果你说 g++ main.cpp
并且这是你的整个命令行,错误是链接器错误,它找不到 favNum
,对吗?在这种情况下,请尝试:
g++ main.cpp favourite.cpp
或者拆分编译和链接:
g++ -c main.cpp -o main.o
g++ -c favourite.cpp -o favourite.o
g++ main.o favourite.o
-c
的意思是:只编译,没有链接,-o
filename
是必需的,因为你想要将输出写入两个不同的目标文件以将它们与最后一个命令链接。
您还可以添加额外的标志,最重要的是:
-Wall -Wextra -O3
关于c++ - 在 C++ 中一起编译源文件和头文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18809639/