Создаю заголовочный файл и объявляю в неё простронство имён:
//файл functions.h
#ifndef _FUNCTIONS_H_
#define _FUNCTIONS_H_
#include <math.h>
namespace functions
{
struct Vector
{
float speed;
float alpha;
};
struct Projections
{
float onX;
float onY;
};
struct PointF
{
float x;
float y;
};
Vector speedVector( Projections *projections ); /*<<<<эта строчка*/
}
#endif //_FUNCTIONS_H_
//конец файла
Потом пытаюсь использовать его в другом проекте, который состоит из одного файла:
//файл testReflectFunctions
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream>
#include <cstdlib>
#include </home/Alexandr/Documents/Projects/OpenGLApp/functions.h>
using namespace std;
using namespace functions;
int main(int argc, char *argv[])
{
Projections projections;
Projections * pProjections;
pProjections = &projections;
projections.onX = 1.2;
projections.onY = 2.1;
Vector vec = speedVector( &projections ); /*<<<<< эта строчка*/
return EXIT_SUCCESS;
}
//конец файла
компилятор выводит сообщение об ошибке:
/home/Alexandr/Documents/Projects/testReflectFunctions/src/testreflectfunctions.cpp:41: undefined reference to `functions::speedVector(functions::Projections*)'
В файле реализации functions.cpp вообще убрал описание функции и её заголовок - ничего не меняется. Может я где-то ещё должен указывать (может быть в опциях какого-нибудь automake) то, что я использую это пространство имён?