Когда вы создаете структуру в вашем открытом интерфейсе в MSVC, которая содержит шаблонный элемент данных, вы получите предупреждение во время компиляции.
Одним из решений является экспорт шаблонного типа в вашу DLL (см. эту статью KB).
Я задаю этот вопрос, потому что затрудняюсь понять, почему вы хотите экспортировать этот тип?
Если вы не экспортируете его, в файлах .hpp достаточно информации, чтобы сгенерировать тип самостоятельно.
Если это стандартный тип библиотеки, и у вас есть 2 или более DLL, каждая из которых потенциально связана с другой версией стандартной библиотеки, у вас теперь есть несколько двоичных версий одного типа в вашем коде.
Какой смысл? Случай № 1 может вызвать сбои во время выполнения, если на самом деле есть две разные версии, которые компилятор считает одинаковыми, но № 2 может просто не загрузиться из-за пропущенных символов?
Я совершенно не в базе? На мой взгляд, лучший вариант - просто игнорировать предупреждения MSVC.
РЕДАКТИРОВАТЬ: Никто еще не указал на это, но я знаю и понимаю, что если у вас есть статика в ваших шаблонах, и вы хотите, чтобы эта статика была общей для всех применений вашей DLL внутри одного приложения: вы должны, в этом случае экспортируйте экземпляр шаблона. Это очень важно в случае синглтоноподобных объектов, регистраторов и т. П.