MissingManifestResourceException



  • Hallo,

    ich habe eine Windows-Forms-Applikation geschrieben, die funktioniert einwandfrei. Jetzt will ich die Forms-Applikation von einer MFC-Applikation aus starten. Dazu habe ich die Windows-Forms-Klassen in eine Win32-DLL (mit CLR Unterstützung) gepacked und einen C++ Wrapper um die Windows-Forms-Klassen geschrieben. Jetzt kann ich die Form aus einer Win32 Konsolenanwendung starten.
    Dazu wird eine globale Form erzeugt und mittels form1->ShowDialog angezeigt.

    Das funktioniert alles soweit, die Form läßt sich starten und ausführen. Wenn ich allerdings auf der Menüleite auf Info klicke, sollte eine zweite Form aufgehen, die Versionsinformationen anzeigt, aber leider kommt die Exception:

    System.Resources.MissingManifestResourceException: Für die angegebene Kultur oder die neutrale Kultur konnten keine Ressourcen gefunden werden. Stellen Sie sicher, dass EntnahmePrioritätenEditor.FormInfo.resources beim Kompilieren richtig in die Assembly EntPriEdit eingebettet wurde, oder dass die erforderlichen Satellitenassemblys geladen werden können und vollständig signiert sind.

    Die Exception kommt aus der Zeile in FormInfo.h:

    this->pictureBox1->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"pictureBox1.Image")));
    

    Die Resource FormInfo.resx habe ich von dem Windows-Forms-Projekt in das Dll Projekt übernommen und mittels Reflector kann ich die Resouren auch in der Dll-Assembly sehen.

    Die Kulturen sind bei beiden Projekten auf Standard eingestelt.

    Im Moment bin bin ich mit meinem Latein am Ende 😕 und ich brauche neue Anregungen.

    Vielleicht hat ja jemand eine Idee.

    P.S.: Ich kann die DLL nicht debuggen. Das ist zwar im Moment nicht so schlimm, weil ich die Zeile kenne, die den Fehler auslöst, aber es wäre trotzdem ganz schön zu wissen, wie man das ganze Debugable macht.



  • Die Fehlermeldung sagt es schon: Die Resource ist nicht richtig eingebettet. Ich habe jetzt die resx-Dateien aus dem DLL Projekt genommen und in den Linker-Optionen unter Eingabe->Verwaltete Resource-Datei einbetten die FormInfo.resource aus dem Forms-Projekt angegeben und alles neu erstellt. Dann ist die Fehlermeldung verschwunden. Leider weiß ich noch nichtt, warum es nicht funktioniert, wenn ich die resx Dateien zum Dll-Projekt hinzufüge.

    Wenn eine neue Form erstellt wird, wo ist dann bitte die Linkeroption, die die Resource einbettet? Oder geht das irgendwie anders?

    Ich kann zwar die die erstellten Resourcen im Projekt/Debug-Verzeichnis sehen, aber nirgends erkennen, wer sie einbettet und wie sie eingebettet werden.

    Grüße,
    taraneas


Anmelden zum Antworten