title: LNK2022 Error When Using /clr
body: <p>I'm having a problem linking a C++ project in VS2008 when using the <code>/clr</code> compile option.  I am getting the following build errors:</p>
  <pre><code>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
  </code></pre>
  <p>I have no idea what <code>PROPSHEETPAGEA</code> and <code>PROPSHEETPAGEW</code> are referring to.  I checked online to see Microsoft's description of the error but am at a loss as to what it means.
  <a href="http://support.microsoft.com/kb/324088" rel="noreferrer">http://support.microsoft.com/kb/324088</a></p>
  <blockquote>
  <p>To resolve this problem, add unique identifiers when you use Managed Extensions for C++ so that you avoid using anonymous structures as global variables.</p>
  <p>Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article. This bug was corrected in Microsoft Visual C++ .NET (2003).</p>
  </blockquote>
  <p>Any ideas would be greatly appreciated.</p>
  <p><strong>EDIT</strong></p>
  <p>After doing a ildasm on Class1.obj I extracted two messages:</p>
  <pre><code>// 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                          &gt;  A             &lt;
  //      ctor args: (65)
  // 
  //  CustomAttribute #2 (0c0012a1)
  //  -------------------------------------------------------
  //      CustomAttribute Type: 0a000001
  //      CustomAttributeName: Microsoft.VisualC.DebugInfoInPDBAttribute :: instance void .ctor()
  //      Length: 4
  //      Value : 01 00 00 00                                      &gt;                &lt;
  //      ctor args: ()
  // 
  //  CustomAttribute #3 (0c0012a2)
  //  -------------------------------------------------------
  //      CustomAttribute Type: 0a000004
  //      CustomAttributeName: System.Runtime.CompilerServices.NativeCppClassAttribute :: instance void .ctor()
  //      Length: 4
  //      Value : 01 00 00 00                                      &gt;                &lt;
  //      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                                      &gt;                &lt;
  //      ctor args: ()
  // 
  //  CustomAttribute #2 (0c0012b1)
  //  -------------------------------------------------------
  //      CustomAttribute Type: 0a000001
  //      CustomAttributeName: Microsoft.VisualC.DebugInfoInPDBAttribute :: instance void .ctor()
  //      Length: 4
  //      Value : 01 00 00 00                                      &gt;                &lt;
  //      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                          &gt;  A             &lt;
  //      ctor args: (65)
  </code></pre>
  <p>I'm not sure what all this means, but it looks as if the second entry is identical to the first with the exception of the attributes being defined backwards.</p>