C++ 头文件中声明的函数都是在哪儿定义的?

来源:百度知道 编辑:UC知道 时间:2024/05/29 15:05:23
我编写运行一个OpenGL例程时,调用别人编写的gltTransformPoint方法,出错说:ransform.obj : error LNK2001: unresolved external symbol "void __cdecl gltTransformPoint(float const * const,float const * const,float * const)" (?gltTransformPoint@@YAXQBM0QAM@Z)
这个方法是在GLTools.h中定义的,我在程序开头也包含了进去:
#include "../Common/OpenGLSB.h"
#include "../Common/GLTools.h"(路径是绝对正确的)
到GLTools.h一看,里面只是有个函数声明void gltTransformPoint(const GLTVector3 vSrcPoint, const GLTMatrix mMatrix, GLTVector3 vPointOut);
那具体的函数定义代码在哪儿呢?这是我学C++一大困惑的地方,好多头文件都只是有个声明没见具体代码,还有,这个问题该怎么解决?让程序能找到gltTransformPoint,请教大家了
好像是缺少lib文件,可是我该怎么知道gltTransformPoint函数在哪个lib文件里呢?有请赐教

1、函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。这三个元素被称为函数原型,函数原型描述了函数的接口。定义函数的程序员提供函数原型,使用函数的程序员就只需要对函数原型编辑即可。

2、比如: 【返回类型】 函数名(参数1类型 参数1,参数2类型 参数2,……);
实例:bool swap(int a,int b);
例子中函数的返回类型为bool型,两个参数都是int型,一个名称为a ,一个名称为b
函数声明中的形参名往往被忽略,如果声明中提供了形参的名字,也只是用作辅助文档。另外要注意函数声明是一个语句,后面不可漏分号!
如果是自己写的函数,在声明函数的同时要对函数进行定义。
假设头文件名为head.h,源文件名为main.cpp,两个文件在同一个目录下
在头文件中直接加上int swap(int a,int b);这一句就可以了
在源文件中还要加上include"head.h"
并且加上函数的定义:
bool swap(int a,int b){//swap函数用于两个数据交换
int c;
c=a;
a=b;
b=c;
}
注意在头文件中声明后记得在源文件中包含这个头文件,要不然是找不到函数的定义的。

这不是编译错误,这是连接错误。

第一种可能:
你先去工程目录下面看有没有lib文件,有的话就用这个指令加进去:
#pragma comment( lib,"lib文件名" )
加在这两个头文件后面。
比如:
#pragma comment( lib,"glut32.lib" )
#pragma comment( lib,"glut.lib" )

第二:
看看commom/目录下面是否有对应的OpenGLSb.cpp、Gltools.cpp文件,如果有的话,就添加到工程里边来。

-------------