Наше приложение использует шаблоны C ++ во многих местах. В настоящее время я пытаюсь портировать с gcc 3.3.3 на 4.1.0 и сталкиваюсь с проблемами. Я воссоздал проблему в небольшой общей библиотеке и исполняемом файле. Я создаю библиотеку общего ресурса. Хорошо, но исполняемый файл не может связать со следующим:
undefined reference to `MyNumber<int>::~MyNumber()'
undefined reference to `MyNumber<int>::MyNumber(int)'
undefined reference to `MyNumber<int>::number()'
Я не использую классы шаблонов непосредственно в исполняемом файле и ожидал, что все это будет инкапсулировано в реализацию в разделяемой библиотеке (вероятно, наивно).
Проблема появляется только при работе с общей библиотекой. Когда я создаю наше приложение на SLES 11 (gcc 4.3.2), большинство моих проблем, кажется, решены, но я все еще получаю ряд следующих сообщений:
undefined reference to `vtable for MYCLASS<T1, T2>'
Это все при связывании исполняемого файла с общими библиотеками.