LNK2022 d'Erreur Lors de l'Utilisation /clr

Je vais avoir un problème de liaison d'un projet C++ dans VS2008 lors de l'utilisation de la /clr option de compilation. Je suis l'obtention des erreurs de build:

Class1.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEA): (0x0200046f).
Class1.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEW): (0x02000473).
Class2.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEA): (0x0200046f).
Class2.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEW): (0x02000473).
Class3.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEA): (0x0200046e).
Class3.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEW): (0x02000472).
Class4.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEA): (0x0200046e).
Class4.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEW): (0x02000472).
Class5.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEA): (0x0200046e).
Class5.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEW): (0x02000472).
Class6.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEA): (0x0200046e).
Class6.obj : error LNK2022: metadata operation failed (8013118D) : Inconsistent layout information in duplicated types (_PROPSHEETPAGEW): (0x02000472).
LINK : fatal error LNK1255: link failed because of metadata errors

Je n'ai aucune idée de ce que PROPSHEETPAGEA et PROPSHEETPAGEW se réfère. J'ai vérifié en ligne pour voir Microsoft description de l'erreur mais je suis à une perte quant à ce qu'il signifie.
http://support.microsoft.com/kb/324088

Pour résoudre ce problème, ajoutez les identificateurs uniques lorsque vous utilisez des Extensions managées pour C++ afin de vous éviter l'utilisation anonyme des structures comme des variables globales.

Microsoft a confirmé l'existence de ce bogue dans les produits Microsoft répertoriés au début de cet article. Ce bogue a été corrigé dans Microsoft Visual C++ .NET (2003).

Toutes les idées seraient grandement appréciés.

MODIFIER

Après avoir fait un ildasm sur Class1.obj j'en ai extrait deux messages:

//TypeDef #1134 (0200046f)
//-------------------------------------------------------
// TypDefName: _PROPSHEETPAGEA  (0200046F)
// Flags     : [NotPublic] [SequentialLayout] [Class] [Sealed] [AnsiClass] [BeforeFieldInit]  (00100108)
// Extends   : 0100000B [TypeRef] System.ValueType
// Layout    : Packing:0, Size:56
// CustomAttribute #1 (0c0012a0)
// -------------------------------------------------------
//     CustomAttribute Type: 0a000003
//     CustomAttributeName: Microsoft.VisualC.MiscellaneousBitsAttribute :: instance void .ctor(int32)
//     Length: 8
//     Value : 01 00 41 00 00 00 00 00                          >  A             <
//     ctor args: (65)
//
// CustomAttribute #2 (0c0012a1)
// -------------------------------------------------------
//     CustomAttribute Type: 0a000001
//     CustomAttributeName: Microsoft.VisualC.DebugInfoInPDBAttribute :: instance void .ctor()
//     Length: 4
//     Value : 01 00 00 00                                      >                <
//     ctor args: ()
//
// CustomAttribute #3 (0c0012a2)
// -------------------------------------------------------
//     CustomAttribute Type: 0a000004
//     CustomAttributeName: System.Runtime.CompilerServices.NativeCppClassAttribute :: instance void .ctor()
//     Length: 4
//     Value : 01 00 00 00                                      >                <
//     ctor args: ()


//TypeDef #1138 (02000473)
//-------------------------------------------------------
// TypDefName: _PROPSHEETPAGEW  (02000473)
// Flags     : [NotPublic] [SequentialLayout] [Class] [Sealed] [AnsiClass] [BeforeFieldInit]  (00100108)
// Extends   : 0100000B [TypeRef] System.ValueType
// Layout    : Packing:0, Size:56
// CustomAttribute #1 (0c0012b0)
// -------------------------------------------------------
//     CustomAttribute Type: 0a000004
//     CustomAttributeName: System.Runtime.CompilerServices.NativeCppClassAttribute :: instance void .ctor()
//     Length: 4
//     Value : 01 00 00 00                                      >                <
//     ctor args: ()
//
// CustomAttribute #2 (0c0012b1)
// -------------------------------------------------------
//     CustomAttribute Type: 0a000001
//     CustomAttributeName: Microsoft.VisualC.DebugInfoInPDBAttribute :: instance void .ctor()
//     Length: 4
//     Value : 01 00 00 00                                      >                <
//     ctor args: ()
//
// CustomAttribute #3 (0c0012b2)
// -------------------------------------------------------
//     CustomAttribute Type: 0a000003
//     CustomAttributeName: Microsoft.VisualC.MiscellaneousBitsAttribute :: instance void .ctor(int32)
//     Length: 8
//     Value : 01 00 41 00 00 00 00 00                          >  A             <
//     ctor args: (65)

Je ne suis pas sûr de ce que tout cela signifie, mais il semble comme si la deuxième entrée est identique à la première, à l'exception des attributs définis à l'envers.

J'ai modifié ma configuration de la solution jusqu'à la maison, tout le code managé dans un projet unique au lieu de plusieurs projets, et l'erreur a disparu. Il restera à jamais un mystère...

OriginalL'auteur lumberjack4 | 2010-10-11