У меня есть 2 файла:
tier1.h
tier1.cpp
В tier1.h у меня есть:
//code
namespace variab
{
int x...; float tpl...; //etc
}
namespace universal
{
using namespace variab;
//some functions prototypes
}
В tier1.cpp определены функции. Некоторые функции находятся в замкнутых пространствах имен, таких как: universal :: extG ::. Эти функции используют переменные, найденные в пространстве имен переменной.
В исходный файл, где находится главный файл, включен tier1.h.
Когда я пытаюсь скомпилировать программу, она выдает ошибки, указывающие на переменные, найденные в пространстве имен variab. Ошибка везде одинакова. Вот как это выглядит:
error LNK2001: unresolved external symbol "int * variab::st" (?st@variab@@3PAHA)
В чем проблема?
В заголовочном файле вы декларирование переменные в пространстве имен. Вам нужно только объявить их с extern
ключевое слово:
namespace variab
{
extern int x;
extern float tpl;
// etc...
}
Затем в исходном файле вы делаете определение:
namespace variab
{
int x;
float tpl;
// etc...
}
Других решений пока нет …