编译c ++时链接自定义头文件

Mar*_*ffx 4 c++ linker glut compilation header

使用g ++在linux上编译C++程序时,如何链接到自己的头文件中?

例如,我有一个包含以下内容的文件:

#include <stdlib.h>
#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
#include "3DCurve.h"
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令编译时:

 g++ -lm -lglut -lGL -o 3dcurve Example_8_1.cpp
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

undefined reference to 'draw3Dcurve(double, double, double, double, double, double)'
Run Code Online (Sandbox Code Playgroud)

如何将3DCurve.h文件链接到编译器?头文件及其实现与我正在编译的文件位于同一文件夹中.我的理解是编译器应该找到它,如果它位于同一个文件夹中.

我得不到什么?

jua*_*nza 6

一个不链接到头文件,一个只包括它们.但是,如果头文件具有相应的实现文件,则必须将其包含在编译行中,或者从中创建一个目标文件,并将其包含在编译行中.从您的错误中,您看起来有一个尚未正确处理的实现文件.

假设DCurve.h调用实现if ,3DCurve.cpp那么你可以这样做:

g++ -lm -lglut -lGL -o 3dcurve 3DCurve.cpp Example_8_1.cpp
Run Code Online (Sandbox Code Playgroud)

其他选项是使用g ++选项创建目标文件,然后3DCurve.o-c

g++ -lm -lglut -lGL -o 3dcurve 3DCurve.o Example_8_1.cpp
Run Code Online (Sandbox Code Playgroud)

或者,创建一个共享或静态库,并像使用其他第三方库一样使用它.