Mysterium Metadatenfehler
-
Hallo. Hab folgendes Problem. Füge ich in diesem Code eine weitere Funktion blabla ein, erhalte ich folgende Fehlermeldungen:
Fehler 1 error LNK2022: Fehler bei Metadatenoperation (80131187) : Duplizierte Typen wurden gefunden, aber die Methodendeklarationen sind nicht konsistent (Typen: A.form1; Methoden: blabla): (0x06000002). Farbenändern1.obj
Fehler 2 error LNK2022: Fehler bei Metadatenoperation (801311D6) : Unterschiedliche Anzahl von Methoden in duplizierten Typen (A.form1): (0x02000003). Farbenändern1.objDiese beiden Fehler für alle *.obj
Fehler 13 fatal error LNK1255: Fehler bei Verknüpfung aufgrund von Metadatenfehlern A
Form1.h namespace A { public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); } public: int Funktiona(void); public: void Funktionb (int*); public : void blabla(void);
Jemand eine Idee oder schon mal einen ähnlichen Fehler gehabt?
-
Schau mal in der Hilfe zu LNK2022, da steht was möglicherweise die Ursache ist und wie man sie auch finden kann (ildasm -tokens)
-
Das scheint ein Visual Studio 2005 Problem zu sein und lässt sich einfach durch "verwaltete Ressourcen aktualisieren" (Projektmappenexplorer rechtsklick auf die entsprechende Headerdatei) beheben. Da muss man auch erst mal drauf kommen.
-
Es genügt eigentlich auch einfach "Projektmappe leeren" und dann neu erstellen oder gleich "Projekt neu erstellen". Dann ist der Fehler auch weg.
-
Also bei mir verschwindet der Fehler bei keiner der Lösungen.
Den Blick in die Hilfe kann man sich in diesem Fall sparen. Da steht das etwa nach dem Schema: Die Sonne blendet -> Erklärung -> Ihre Augen sind aufgrund hohen Lichteinfalls überreizt.
-.-
-
Naja, das man dann die Augen zumachen kann ist doch klar ;o)
Bereinige mal das Projekt und erstelle es neu
-
Das hab ich doch schon gemacht.
Aber ich hab das Problem.
Eine andere Form war von dem Fehler betroffen. Deren *.h Datei musste ich erst in das Include-Verzeichnis meines SDKs kopieren. Jetzt klappt es .
-
hm ^^ Magst das ein wenig umreissen ? WIrd sicherlich noch mal jemand helfen können, die Kosntaltion das man nen Header aus der SDK benötigt um die Meldungen wie "Unterschiedliche Anzahl von Methoden in duplizierten Typen " zu beseitigen hört sich sehr interesannt an.
-
bei mir kommt ein ähnlciher fehler, er meckert über JEDEN meiner Quellcode-dateien
ungefähr so:error LNK2022: Fehler bei Metadatenoperation (80131187) : Duplizierte Typen wurden gefunden, aber die Methodendeklarationen sind nicht konsistent (Typen: MT4.Lowohm; Methoden: Range_empfangen): (0x060000d8).
Wenn ich das projekt jetzt einfach Release kompiliere klappt es, ich kann danach auch wieder im Debug kompilieren. Das nervt leider irgendwie, weil ich bei Release ja ständig die AssemblyInfo ändern muss
die entwicklungsumgebung (VC2005) ist ansonsten gut, bis auf immer mal wieder unerklärliche fehler die ich nicht nachvollziehen kann.
BITTE helft mir.
-
Hatte den Fehler glaube ich auch schon (17 LNK-Errors mit den Metadaten und duplizierten Typen auf einmal), konnte die ausmerzen nachdem ich nochmal die includes in allen Quellcodedateien geprüft habe und entsprechend "sauber" angeordnet(Er mochte einen versehentlichen doppelten Include nicht). Danach Projekt neu erstellt (dann hats funtioniert) und der Fehler ist nicht mehr aufgetaucht.
Hoffe das hilft, ansonsten wie schon bereits gesagt, in der Hilfe nachsehn und die möglichen Ursachen prüfen.
-
ich habe jetzt mal alle doppelten include entfernt, auf wenn die keine funktionen hatten.
verwundern tut es mich das der compiler bei JEDER quellcodedatei meckert. auch die assembly.cpp oder stdafx.cpp. also jede datei vor die stdafx.h "included" wird. und da steht sicher jede include nur einmal drin.
-
Mein Blick als Laie: Die Fehlermeldung klingt danach, als ob in deinem Projekt zwei unterschiedliche Versionen der Klassendefinition auftauchen. Hast du die Funktion, über die sich der Compiler beschwert, eventuell hinter bedingter Compilierung (#if...#endif) versteckt und einzelne Dateien unter unterschiedlichen Bedingungen compiliert?
-
nein hab ich nicht. er beschwert sich über JEDE funktion/methode die in eine quellcodedatei geschrieben wurde. Außerdem beschwert er sich über JEDE quellcodedatei auch diese wo keine funktionen/mehtoden drin sind.
außerdem kompiliert er es ja im release und wenn er das geschafft hat auch in debug. das ist ein fehler den ich nicht nachvollziehen kann.
-
hab jetzt rausgefunden
Die fehler kommen immer wenn ich in einer klasse eine neue funktion/methode/eigenschaft geschrieben habe. wenn ich das projekt dann als relaese compiliere klappt alles wie gewünscht.
ich muss noch irgendeine kleinigkeit übersehen, oder das ist ein bug der nur bei mir auftritt, in den hilfen steht zu genau diesen problem nämlich nichts.
-
neues Projekt gleicher Fehler.
ich habe jetzt einfach mal alle .obj-gelöscht, und siehe da es ging auf einmal wieder. wer weiß wie lange.
kann es sein das es zu Inkonsistenzen kommt, wenn ich eine Datei ändere, kompiliert er den Quellcode nicht, und wenn eine Andere Funktion darauf zugreift gibs mecker?