无法解析的外部符号与正常头/源设置

Unresolved External Symbol With Normal Header/Source Setup

本文关键字:常头 设置 符号 外部      更新时间:2023-10-16

我正在做一个基本的c++设置。有一个主文件,它调用一个函数,从另一个文件qSort.h/qSort.cpp中快速排序。然而,当我试图这样做时,我得到未解析的外部符号,这意味着函数原型是可见的,但不是函数定义本身。但是,当我将quickSort函数移动到头文件中时,它运行得很好,因此识别函数定义一定是一个问题。

qSort头看起来像:

#ifndef __qSort_h__
#define __qSort_h__
int quickSort(int * inputArray);
#endif

qSort源代码看起来像(现在我修复它时为空):

#include "qSort.h"
int quickSort(int * inputArray){

return 4;
}

在我的主文件中被简单地称为:

std::cout << quickSort(arrayInput);

并包含在主源文件中:

#include "qSort.h"
#include "SortingPractice.h"
#define ARRAY_LENGTH 20

我被告知,在你的头放置任何实际的代码是可怕的,所以我正在寻找一些建议如何避免这样做,而让这段代码运行。谢谢你。

编译器/链接器需要知道程序的所有部分。一种简单的方法是将两个源文件gcc main.cpp qsort.cpp编译在一起,这样它就会将生成的两个目标文件传递给链接器。

如果单独编译,则需要将两个目标文件都传递给链接器