Извините, что беспокою кого-либо с этим вопросом, но я исследовал это в течение нескольких часов, пока без разрешения:
Я портирую довольно масштабное приложение на CRT 10.0 (компилятор) в Visual Studio 2010. Приложение управляется C ++ / CLI, использующим / clr. Большая часть кода является родной (95%), с несколькими управляемыми частями здесь и там.
Таким образом, моя работа состоит в том, чтобы сделать переключение в .vcxproj для нацеливания на более новую 10.0 CRT (т.е. компилятор). Ранее мы использовали v90 или компилятор VC, поставляемый с VS 2008 SP1.
Ладно, так что сломать изменения? Похоже, куча на самом деле. Я исправил несколько проблем с итераторами, связанных с наборами, и все было довольно просто.
Но эти ошибки компоновщика убивают меня. Любая помощь будет оценена:
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0001c0).
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0001c5).
...
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2034: metadata inconsistent with COFF symbol table: symbol '??0?$allocator@D@std@@$$FQAE@ABV01@@Z' (06000141) has inconsistent metadata with (0A000F75) in identity.obj
1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2034: metadata inconsistent with COFF symbol table: symbol '??0?$allocator@D@std@@$$FQAE@ABV01@@Z' (06000141) has inconsistent metadata with (0A000F76) in ICustAttribCollapseManagerImp.obj
... (repeated hundreds of times)
Я пошел дальше и не обрисовал символ:
??0?$allocator@D@std@@$$FQAE@ABV01@@Z
и получил:
public: __thiscall std::allocator<char>::allocator<char>(class std::allocator<char> const &)
Итак, насколько я понимаю, файл msvcmrtd.lib имеет этот std :: allocator, скомпилированный одним способом, а что-то еще в моих настройках проекта (#pragma managed ??) скомпилировано другим, другим способом. Но если так, что я ищу? В течение многих лет это прекрасно компилировалось с использованием старых компиляторов.
Примечание:
Мы в настоящее время 3.5 .NET Framework (Не уверен, помогает ли это или нет ... Я сомневаюсь в этом)
Спасибо