使用正常 Header/Source 设置的未解析外部符号

Unresolved External Symbol With Normal Header/Source Setup

我正在进行基本的 C++ 设置。有一个主文件,它从另一个文件 qSort.h/qSort.cpp 调用函数 quickSort。但是,当我尝试这样做时,我得到了未解析的外部符号,这意味着函数原型是可见的,但不是函数定义本身。但是,当我将 quickSort 函数移动到 header 中时,它 运行 就好了,所以一定是识别函数定义有问题。

qSort header 看起来像:

#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

有人告诉我,在您的 header 中放置任何实际代码是很糟糕的,所以我正在寻找一些建议,如何在将此代码添加到 运行 时避免这样做。谢谢。

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

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