У меня была такая же проблема сегодня, при переносе моего проекта с vs2008 на vs2010.При компиляции проекта CLI, который связывается с другими библиотеками C ++, я получил эту ошибку ссылки:
MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<char,std::char_traits<char>,std::allocator<char> >): (0x0200004f).
MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (std.basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >): (0x02000075).
Я пробовал ildasm, как предлагается в документации, но не смог найти ни одного определения типа, которое кажется таким же, но имеющееразные имена.
Более того, я должен сказать, что не до конца понимаю эту ошибку.Появление двух ошибок означает, что есть две разные проблемы с обоими типами (строка символов и строка wchar), или это означает, что существует одна проблема, вызывающая эти два типа.Каково значение чисел в конце строки (хотя я нашел два определения типа в журнале ildasm с этими числами).В документации ничего об этом нет.
Кстати - те же проекты - одна и та же конфигурация компилируется и прекрасно связывается с vs2008.связать с проектом CLI, а также с проектом CLI (скомпилировать его с флагом / clr).перепроверка основного проекта CLI, кажется, решает проблему.Каким-то образом добавление поддержки clr или связывание с clr разрешают конфликты этого типа.
Если у кого-то есть грамотное объяснение этой проблемы, я бы с удовольствием его прочитал.