У меня есть функция шаблона в общей библиотеке. Я знаю, что функция будет вызываться с аргументами int или double. Поэтому я создаю экземпляр двух версий шаблона в исходном файле.
template void library::doSomething<int>(int const number);
template void library::doSomething<double>(double const number);
Это решение работает с g ++ в Linux (получая * .so), но когда я пытаюсь скомпилировать тот же код в * .dll в Windows, используя VS2010, я получаю ошибку, подобную этой:
ошибка LNK2001: неразрешенный внешний символ doSomething
Экспорт предоставляется в файле * .def, например:
ЭКСПОРТ
йоЗотеЬЫпд
Я что-то упустил или это решение "несовместимо" с Windows?
Спасибо.
Petr