Magerquark.de

Notizen · Fundstücke · Anleitungen

System.TypeLoadException in C++/CLI-MFC-Anwendung

Beschreibung

Beim Umstellen einer MFC-Anwendung auf C++/CLI kam nach erfolgreicher Kompilierung beim Start eine .NET-Fehlermeldung System.TypeLoadException, mit Fehlercode 0x80131522.

Ursache

Genau kenne ich die Ursache nicht, verschiedene Berichte/Postings deuten darauf hin, dass es ein Fehler mit dem Assembly Loader ist, der die Anwendung initial startet.

Scheinbar gibt es eine Begrenzung diverser Ressourcen in der Sektion globaler Symbole. Dass dies tatsächlich ein Grund sein könnte zeigte die riesige Dateigröße von 66 MB für die eigentliche Anwendung (früher, ohne C++/CLI war diese 30 MB groß).

Lösung

Die eigentliche, für mich passende, Lösung wurde hier beschrieben:

Ich habe das sogenannte „String Pooling“ in meinen Visual C++-Projekteinstellungen aktiviert. Danach war die kompilierte Anwendung noch 8 MB (statt 66 MB) groß und der Fehler trat beim Laden nicht mehr auf.

Weitere ggf. nützliche Ressourcen:

Kommentare

4 Kommentare zu „System.TypeLoadException in C++/CLI-MFC-Anwendung“

  1. Avatar von Anderer Sven

    Quasi 58 MB Einsparung durch Stringpooling? Hast Du die alte Anwendung auch mal mit aktiviertem Stringpooling kompiliert?

  2. Avatar von Uwe Keim

    Nee, das will ich jetzt gar nicht wissen, sonst ärgere ich mich post-mortem :-(.

  3. Avatar von Anderer Sven

    Mach’s für die Wissenschaft. 🙂

  4. Avatar von Uwe Keim

    Mal guckn, Onkel!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.