Ошибки компоновщика LNK2022 и LNK2034 в CRT версии 10.0

Извините, что беспокою кого-нибудь этим вопросом, но я исследовал это в течение нескольких часов, но пока не нашел решения:

Я перенос довольно массивного приложения на 10.0 CRT (компилятор) в 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 ??) компилируется другим, другим способом. Но если да, то что мне искать? Это прекрасно компилируется в течение многих лет с использованием старых компиляторов.

Примечание:

Моя задача - переключить .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 ??) компилируется другим, другим способом. Но если да, то что мне искать? Это прекрасно компилируется в течение многих лет с использованием старых компиляторов.

Примечание:

Моя задача - переключить .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 ??) компилируется другим, другим способом. Но если да, то что мне искать? Это прекрасно компилируется в течение многих лет с использованием старых компиляторов.

Примечание: Раньше мы использовали 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 ??) компилируется другим, другим способом. Но если да, то что мне искать? Это прекрасно компилируется в течение многих лет с использованием старых компиляторов.

Примечание: Раньше мы использовали 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 ??) компилируется другим, другим способом. Но если да, то что мне искать? Это прекрасно компилируется в течение многих лет с использованием старых компиляторов.

Примечание: что все было довольно просто.

Но эти ошибки компоновщика убивают меня. Любая помощь будет принята с благодарностью:

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 ??) компилируется другим, другим способом. Но если да, то что мне искать? Это прекрасно компилируется в течение многих лет с использованием старых компиляторов.

Примечание: что все было довольно просто.

Но эти ошибки компоновщика убивают меня. Любая помощь будет принята с благодарностью:

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 ??) компилируется другим, другим способом. Но если да, то что мне искать? Это прекрасно компилируется в течение многих лет с использованием старых компиляторов.

Примечание: что я ищу? Это прекрасно компилируется в течение многих лет с использованием старых компиляторов.

Примечание: что я ищу? Это прекрасно компилируется в течение многих лет с использованием старых компиляторов.

Примечание: В настоящее время мы используем платформу .NET 3.5 (Не уверен, помогает это или нет ... Я сомневаюсь)

Спасибо

6
задан Erik 6 April 2011 в 22:56
поделиться