У меня есть статическая библиотека, написанная на C ++, и у меня есть структура, описывающая формат данных, т.е.
struct Format{
long fmtId;
long dataChunkSize;
long headerSize;
Format(long, long, long);
bool operator==(Format const & other) const;
};
Некоторые из форматов данных широко используются, такие как {fmtId=0, dataChunkSize=128, headerSize=0}
и {fmtId=0, dataChunkSize=256, headerSize=0}
Некоторые классы структуры данных получают формат в конструкторе. Мне бы хотелось иметь какие-то ярлыки для этих широко используемых форматов, например пару глобальных Format
членов gFmt128, gFmt256
, которые я могу передать по ссылке. Я создаю их экземпляр в файле .cpp, например
Format gFmt128(0, 128, 0);
и в .h есть
extern Format gFmt128;
также я объявляю Format const & Format::Fmt128(){return gFmt128;}
и пытаюсь использовать его в основном модуле.
Но если я попытаюсь сделать это в основном модуле, который использует lib, компоновщик пожалуется на неразрешенный внешний gFmt128
.
Как я могу заставить мою библиотеку «экспортировать» эти глобальные переменные, чтобы я мог использовать их из других модулей?