Мой сайтг: http://pustovoytov.ru

В разных компиляторах предупреждение имеет разное описание:


MS warning C4251: class ’std::vector<_Ty>’ needs to have dll-interface to be used by clients of class…


Intel warning #1744: field of class type without a DLL interface used in a class with a DLL interface


Проблема возникает при объявлении экспортируемыми из DLL классов, использующих шаблоны. Дело в том, что экспортироваться могут только экземпляры классов, а не объявления. Поэтому необходимо экспортировать каждую используемую специализацию. которая должны быть видна снаружи (потому что каждая специализация с точки зрения компилятора является отдельным классом). Для того же, чтобы ее экспортировать, ее надо внутри DLL явным образом инстанциировать. Проблема касается всех шаблонов, которые используются в качестве не-приватных членов класса.


Bot statistics for this page


Share/Save/Bookmark

Read the rest of this entry »

Оригинальная запись опубликована в e-шалаш Пустовойтова Никиты aka flashnik. Пожалуйста, комментарии оставляйте здесь .

@темы: c++, development, hacks, заплатка