MFC-DLL und Dialog-Resource
-
Ich habe eine solche DLL erstellt und einen Dialog eingebunden. Wenn ich die DLL aber compilieren möchte, erhalte ich als Fehlermeldung, dass die ID des Dialogs (und jene der Inhalte) nicht bekannt sind. Ein Einbinden von #include "resource.h" (mache ich in einer anderen DLL nicht) erzeugt zwar ein erfolgreiches Compilieren, beim Einbinden in mein Hauptprogramm kommen jedoch die gleichen Fehlermeldungen bezüglich unbekannter IDs wieder.
Hat jemand einen Tipp, auf was ich achten oder ob ich eine bestimmte Projekt-Einstellung vornehmen muss?
-
Du brauchst die ResourceIDs doch im Hauptprogramm nicht mehr.
Nur noch die Klassen. Hast du die exportiert? Sonst hab ich ne Anleitung für VC6.
-
Danke für Deine schnelle Antwort.

Ich habe die Klasse folgendermaßen exportiert.class AFX_EXT_CLASS CHauptdialog : public CDialogDas klappt in der anderen DLL ganz wunderbar.
Ich weiß, dass ich die Ressourcen-ID der DLL im Hauptdialog eigentlich nicht mehr benötige, aber dummerweise verlangt er danach, was mich einen Fehler in der DLL-Erstellung vermuten lässt.
Die DLLs nutze ich statisch, also ich binde jeweils die .lib ins Projekt ein und include die .h, deren Klasse ich exportiere. Die DLL kommt dann ins Programm-Verzeichnis (also erst mal Debug).
Das komische ist ja, dass er bereits beim Erstellen der DLL wegen der Ressourcen-IDs rum heult - das ganz3e macht er auf 3 Rechnern, also habe ich wohl irgend einen systematischen Fehler.So ein HowTo würde ich gern lesen.

-
Och, es lag natürlich auf der Domain, die grade offline ist... gelobt sei das Backup.

www.estartu.de/temp/Dll_machen.htmIst nicht viel, aber vielleicht is ja was dabei.
Sonst musst du evtl. mal Code zeigen.Ich habe gerade geschaut, bei mir hat es nach einem include in der jeweiligen Headerdatei geklappt.
Projektübergreifende Includes habe ich im Hauptprogramm nicht gebraucht.
-
Ich geh am Stock...es klappt nicht.
So blöd kann ich mich doch gar nicht anstellen.
Neues Projekt > DLL > MFC-Erweiterungs-DLL ... Dialog einfügen > neue Klasse (mittel Strg+W) mit IDD des Dialoges ... Erstellungsfehler, egal ob mit oder ohne Export; mit oder ohne abgeänderte Projekteinstellungen.
Was hast Du denn includet, die resource.h? Und das läuft dann in der Hauptanwendung? Langsam zweifle ich an mir selbst.

-
Also, ich mach das so:
1.) Resource erstellen
2.) Klasse dazu erstellen
3.) in der Dialog.h die resource.h includen
4.) Exportsymbole hinschreiben
5.) Klasse in der Hauptanwendung benutzen (nur Dialog.h includen und los)
Und vorher das, wohin ich dir den Link gepostet habe.Zeig mal deine genauen Meldungen, vielleicht erkennt man da was.
Und: Ich binde dynamisch, du statisch - vielleicht ist es deswegen?

-
Extension DLLs sind nur möglich, wenn die MFC-DLLs dynamisch gebunden werden!
Siehe Technical Notes (TNxxx Dokumente).
-
Mich stimmt nur nachdenklich, dass ich ein DLL-Projekt habe (wie gesagt, ist schon einige Monde mit der Erstellung her, deshalb weiß ich nicht mehr, was ich damals gemacht habe), welches im Global (Klassenübersicht) eine DllMain hat. Das ist meines Wissens nach ein untrügliches Zeichen für eine Erweiterungs-DLL, oder? Und diese DLL setze ich statisch ein - also die .h der exportierten Klasse includen und die .lib ins Projekt einfügen. Zeiger auf die Klasse und schon gehts.
Mich überrascht auch, dass ich bei meiner neu erstellten Erweiterungs-DLL jedes mal, wenn ich eine neue Klasse erzeuge, ein#include " \ add additional includes here"in der entsprechenden .cpp habe, bei meinem anderen Projekt jedoch ein
#include "NameDesDLLProjekts.h"(obwohl diese gar nicht existiert).
Das Verhalten kann ich jetzt nur erzeugen, wenn ich eine Standard-DLL erzeuge, der fehlt dann jedoch das DLLMain im Global und sie besitzt obendrein noch einer entsprechende .h, da sie ein eigenes App hat.
Irgendwie raff ich das nicht.
-
stek schrieb:
bei meinem anderen Projekt jedoch ein
#include "NameDesDLLProjekts.h"(obwohl diese gar nicht existiert).
Das habe ich bei meinen Dlls auch immer.
-
Aber wie bringe ich ihn dazu, das Projekt so zu erstellen? *grübel*
-
stek schrieb:
Aber wie bringe ich ihn dazu, das Projekt so zu erstellen? *grübel*
Mach mal ein neues Projekt und arbeite die Anleitung aus dem Link ab.
Dann hast du die zweite Includeversion.Dann kannst du die Resourcen und Klassen rüberkopieren.
