Существует два исправления этой проблемы, которые я вижу.
Во-первых, вы используете другой класс, который не является шаблоном, для хранения этого статического значения - или сделать его глобальным? - и экспортируйте это из библиотеки.
Другой вариант немного сложнее в том смысле, что вы создаете экземпляр шаблона в коде и экспортируете эти экземпляры шаблонного значения. Итак, чтобы привести пример, скажем, у меня был специальный вид шаблонного класса связанного списка, и мне нужно было иметь статическое значение, разделяемое между библиотеками DLL. Я написал код для шаблонов, но он действительно используется только для небольшого количества типов. Я хотел бы создать классы как таковые:
template <class T> class Foo;
template<> class Foo<int> {};
Затем вы можете экспортировать статические переменные, содержащиеся в.
__declspec(dllexport) int Foo<int>::StaticMember = 0;
(Или что-то в этом роде, я немного устал от экспорта / импорта DLL).
Хотя реальный вопрос заключается в том, зачем вам это делать, поскольку технически DLL может использоваться во всех процессах, и только одна копия хранится в памяти. Вы действительно хотите, чтобы была только одна версия статики для всех процессов или по одной на процесс?