экспортировать специализированную функцию шаблона из dll - PullRequest
2 голосов
/ 11 апреля 2011

У меня есть функция шаблона, которую я определяю в файле заголовка в dll. Мне не нужно экспортировать функцию, потому что все потребители будут читать в заголовочном файле и в любом случае иметь всю функцию. Однако у меня есть специализация этого шаблона, которую нельзя определить в заголовочном файле (или я получу ошибки компоновщика переопределения), поэтому он должен идти в исходном файле.

Как обычно экспортировать эту функцию?

template <typename T>
bool functionName(/*params*/){
//.....
}

template<> IMPORTEXPORTMACRO
bool functionName(/*params*/);

и исходный файл имеет

template<>
bool functionName(/*params*/){
//...

IMPORTEXPORTMACRO - это один из тех макросов, который __declspec(dllimport) или dllexport

Спасибо

1 Ответ

0 голосов
/ 06 августа 2011

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

...