C ++ - импорт явно специализированных шаблонов в Windows - PullRequest
3 голосов
/ 11 октября 2009

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

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

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

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

1 Ответ

5 голосов
/ 11 октября 2009

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

...