Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
metagegevensbewerking is mislukt (HRESULT): error_message
De linker ontdekte een fout bij het samenvoegen van metagegevens. De metagegevensfouten moeten worden opgelost om verbinding te kunnen maken.
Een manier om dit probleem vast te stellen, is door ildasm-tokens uit te voeren op de objectbestanden om te vinden in welke typen de tokens worden vermeld error_messageen om te zoeken naar verschillen. In metagegevens zijn twee verschillende typen met dezelfde naam niet geldig, zelfs als het kenmerk Alleen LayoutType anders is.
Een van de redenen voor LNK2022 is wanneer een type (zoals een struct) bestaat in meerdere compilands met dezelfde naam, maar met conflicterende definities en wanneer u compileert met /clr. Zorg er in dit geval voor dat het type een identieke definitie heeft in alle compilands. De typenaam wordt vermeld in error_message.
Een andere mogelijke oorzaak voor LNK2022 is wanneer de linker een metagegevensbestand op een andere locatie vindt dan is opgegeven aan de compiler (met #using). Zorg ervoor dat het metagegevensbestand (.dll of .netmodule) zich op dezelfde locatie bevindt als het bestand wordt doorgegeven aan de linker, net als toen het werd doorgegeven aan de compiler.
Bij het bouwen van een ATL-toepassing is het gebruik van de macro _ATL_MIXED vereist in alle compilands, als deze in ten minste één toepassing wordt gebruikt.
Voorbeelden
In het volgende voorbeeld wordt een leeg type gedefinieerd.
// LNK2022_a.cpp
// compile with: /clr /c
public ref class Test {};
In dit voorbeeld ziet u dat u geen twee broncodebestanden kunt koppelen die typen van dezelfde naam maar verschillende definities bevatten.
In het volgende voorbeeld wordt LNK2022 gegenereerd.
// LNK2022_b.cpp
// compile with: LNK2022_a.cpp /clr /LD
// LNK2022 expected
public ref class Test {
void func() {}
int var;
};