C ++ - Импорт явно специализированных шаблонов в Windows

У меня возникли проблемы с установкой связи программы в Windows с VC2008 SP1. Я явно специализирую функцию-член шаблона в DLL, которая правильно отображается как экспортированный символ в обходчике зависимостей, для правильного типа и с правильными аргументами.

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

Я попытался изменить свое объявление функции шаблона в заголовках, чтобы включить директиву extern, и в нем правильно указан обычный __declspec (dllimport), но это не имеет значения.

Любые идеи приветствуются. Спасибо.


person kdmiller    schedule 10.10.2009    source источник
comment
Я просто хочу прояснить, что вы подразумеваете под явной специализацией. Существует такая вещь, как явное создание экземпляра, которое отличается от специализации. Вы здесь вообще имеете в виду явное создание экземпляра или просто имеете в виду, что специализируете члена?   -  person Troubadour    schedule 11.10.2009
comment
извините, я имел в виду явное создание (в .cpp) некоторых специализаций конкретных функций-членов. например. в файле C ++: шаблон LIB_API_EXPIMP void ClassName :: memberFnName ‹unsigned char› (const int a, const int b, unsigned char * c) const;   -  person kdmiller    schedule 11.10.2009


Ответы (1)


Наконец, удалось разобраться в этом - это было вызвано тем, что .lib не был зарегистрирован для соответствия DLL из системы управления версиями - возможно, собран с другой версией компилятора. Извините за потраченное время. ... если ничего не помогает, попробуйте восстановить зависимости вашей библиотеки.

person kdmiller    schedule 10.10.2009
comment
Вы знаете, я спал на этом, и когда я проснулся сегодня утром, я пришел к такому выводу. ржу не могу! Спасибо, что оповестили нас. - person Troubadour; 11.10.2009