Использование явно созданных шаблонных функций из другого проекта в Visual Studio

0

У меня есть два проекта ProjA и ProjB в одном решении в visual studio 2008. ProjA зависит от материала в ProjB. ProjB содержит только заголовки, поэтому ничего не нужно строить и библиотеки нет. ProjB определяет шаблон templB в заголовке TemplB.h. ProjA использует эту функцию шаблона как templB. Пока все работает нормально. Однако, когда я явно создаю templB в TemplB.h, я получаю ошибку компоновщика LNK2001, говорящую мне, что templB является нерешенным внешним символом.

В чем проблема? Предполагает ли VS, что явно созданный шаблон находится в каком-либо объектном файле или библиотеке в ProjB, с которым я должен ссылаться, даже если в ProjB нет каких-либо объектных файлов???

Благодарю.

Я поставил здесь два минимальных тестовых проекта: https://dl.dropboxusercontent.com/u/16089481/Projects.zip

Теги:
visual-studio
templates
visual-studio-2008

1 ответ

0
Лучший ответ

Я думаю, вы используете декларацию вместо создания экземпляра...

template <int N> int id() {return N;}

template<> int id<2>(); // just declare id<2> specialisation: definition needed.
template int id<3>();   // Explicit instantiation of id<3>.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню