Ошибка ссылки после обновления от VS2008 до VS2010

Сегодня я встретился со связывающейся проблемой после обновления версии VS с 2008 до 2010, ошибка - что-то вроде этого:

error LNK2019: unresolved external symbol "public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ) referenced in function "public: class std::basic_string,class std::allocator > & __thiscall std::basic_string,class std::allocator >::assign(class std::basic_string,class std::allocator > const &,unsigned int,unsigned int)" (?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z)

error LNK2019: unresolved external symbol "public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ) referenced in function "protected: bool __thiscall std::basic_string,class std::allocator >::_Grow(unsigned int,bool)" (?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z)

Я погуглил эту проблему о сети и нашел подобное сообщение в этом адресе: http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/5ac28a31-3339-4db1-90f4-68edad360309

Но ни один из этих ответов не может решить мою проблему. Кто-либо мог дать мне некоторые подсказки относительно того, как решить эту проблему?

Большое спасибо за справку!

15
задан valiano 12 October 2017 в 02:54
поделиться

1 ответ

Проблема, скорее всего, заключается в том, что одна из библиотек, с которой связывается ваш .exe, была собрана с помощью предыдущей версии Visual Studio. Поскольку эта "другая" библиотека была скомпилирована с предыдущей версией VS, она ищет предыдущие версии функций _XRan и _XLen в среде исполнения C VS2010. MS изменила их (в очередной раз), и старые сигнатуры функций не существуют в среде выполнения VS2010.

old: public: static void __cdecl std::_String_base::_Xran(void)

new: public: void __thiscall std::basic_string::_Xran(void) (это может быть неправильно, но вы поняли идею)

Есть три варианта исправления:

1) Скомпилировать все библиотеки в VS 2010

2) Использовать более старую версию VS для компиляции кода

3) Переписать существующие реализации _XRan и _XLen и переопределить их в компоновщике (см. объяснение JN123 в http://social. msdn.microsoft.com/Forums/en/vcgeneral/thread/5ac28a31-3339-4db1-90f4-68edad360309).

14
ответ дан 1 December 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: