Кроме того, спасибо за вашу помощь, но она не вполне ответила на мой вопрос, который заключался в использовании файла cpp внутри самой библиотеки вместо перемещения инициализации в файл cpp в приложении, вызывающем библиотеку.
То, как я решил это, с использованием VC ++ , заключалось в использовании другого заголовочного файла в библиотеке.Этот заголовочный файл содержит все необходимые статические инициализаторы.Затем я просто #include этот файл заголовка из библиотеки в приложении, и он работает.
Полный дизайн:
Subsys.h
#ifndef _SUBSYS_H
#define _SUBSYS_H
namespace Engines
{
namespace Particles
{
class SubSys : public ISubSys
{
private:
static const int _M[ 3 ];
...
//rest of class
};
}
}
#endif
SubsysParticlesInit.h
#ifndef _SUBSYS_PARTICLES_INIT_H
#define
#include "Subsys.h"
namespace Engines
{
namespace Particles
{
const int SubSys::_M[ 3 ] =
{
0x80,
0x7f,
0x01
};
}
}
#endif
Application.cpp
#include "Subsys.h"
#include "SubsysParticlesInit.h"
int main() { ... }
Требуется вызов 2 заголовков из приложения вместо 1но по крайней мере весь код содержится в библиотеке.