Хотя стандартного способа сделать это не существует, обычно это возможно с помощью методов, специфичных для реализации.Я сделал это давным-давно с Borland C ++ Builder.Идея состоит в том, чтобы объявить ваши шаблоны экспортируемыми из общей библиотеки, где они должны находиться, и импортировать их там, где они используются.Я сделал это следующим образом:
// A.h
#ifdef GENERATE
# define DECL __declspec(dllexport)
#else
# define DECL __declspec(dllimport)
#endif
template <typename T> class DECL C {
};
// A.cpp
#define GENERATE
#include "A.h"
template class DECL A<int>;
Остерегайтесь того, что у меня нет доступа к исходному коду, поэтому он может содержать ошибки. Эта запись в блоге описывает очень похожий подход.
Исходя из вашей формулировки, я подозреваю, что вы не используете Windows, поэтому вам придется выяснить, можно ли применить этот подход ствой компилятор.Надеюсь, этого достаточно, чтобы направить вас в правильном направлении.