Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
metadataåtgärden misslyckades (HRESULT) : error_message
Länkaren upptäckte ett fel vid sammanslagning av metadata. Metadatafelen måste lösas för att länkningen ska bli framgångsrik.
Ett sätt att diagnostisera det här problemet är att köra ildasm -tokens på objektfilerna för att hitta vilka typer som har de token som anges i error_messageoch leta efter skillnader. I metadata är två olika typer med samma namn ogiltiga, även om attributet just LayoutType är annorlunda.
En orsak till LNK2022 är när en typ (till exempel en struct) finns i flera kompileringar med samma namn, men med motstridiga definitioner och när du kompilerar med /clr. I det här fallet kontrollerar du att typen har en identisk definition i alla kompileringar. Typnamnet visas i error_message.
En annan möjlig orsak till LNK2022 är när länkaren hittar en metadatafil på en annorlunda plats än vad som angavs för kompilatorn (med #using). Kontrollera att metadatafilen (.dll eller .netmodule) finns på samma plats när den skickas till länkaren, som den var när den skickades till kompilatorn.
När du skapar ett ATL-program krävs användning av makrot _ATL_MIXED i alla kompileringar, om det används i minst ett.
Examples
Följande exempel definierar en tom typ.
// LNK2022_a.cpp
// compile with: /clr /c
public ref class Test {};
Det här exemplet visar att du inte kan länka två källkodsfiler som innehåller typer av samma namn men olika definitioner.
Följande exempel genererar LNK2022.
// LNK2022_b.cpp
// compile with: LNK2022_a.cpp /clr /LD
// LNK2022 expected
public ref class Test {
void func() {}
int var;
};