MFC DLL in Standard DLL einbinden
-
Hallo Forum!
Ich benutze eine exe-Datei, die -je nach Auswahl- verschiedene DLLs ausführt. Diese werden dynamisch gebunden und sind in Standard-C geschrieben. Meine Studienaufgabe ist es nun, diverse Ergebnisse der DLLs graphisch auszugeben. Ich dachte da an die Verwendung der MFC. Meien Frage ist nun, wie ich aus einer MFC-freien DLL eine MFC Klasse aufrufen kann. Hab leider noch nix passendes gefunden, was mich zu der Frage bringt, ob es überhaupt funktioniert
Also, für eine Hilfestellung würde ich mich freuen.
-
MFC-DLLs kannst du nur im Visual Studio benutzen
-
Warum willst Du das überhaupt machen? Die DLLs liefern Dir doch schon alle Daten dachte ich? Dann schreib einfach ein UI welches diese Daten von den DLLs "ausliest" und dann graphisch anzeigt. Dazu musst Du doch nichts an den DLLs ändern!
Und eine DLL kann immer nur das aufrufen, was sie auch kennt...
-
Hallo,
erstmal danke für die Antworten.
Benutzt wird meinerseits das Visual Studio. Kann ich die MFC Bibliotheken dynamisch zu meiner DLL einbinden? Meine Exe (die mir leider unbekannt und als unveränderbar gegeben ist) meckert nur rum, wenn sie *.cpp Dateien findet. Welche *.lib Dateien müsste ich dazu noch binden, bzw. würde das funktionieren?
-
beschreib mal bitte lieber, was du genau machen willst. Wenn ich deinen ersten Post lese, hast du einige DLLs die halt irgendwas machen und du willst das Ergebnis grafisch(wie auch immer) darstellen.
Wozu brauchst du da MFC-DLLs?Die MFC kannst du dynamisch binden, das lässt sich in de Projektoptionen einstellen.
-
Ja genau. Das hab ich vorhin auch entdeckt. Es ist nämlich so, dass ich an der exe Datei nix verändern kann bzw. darf. Die muss absolut unangetastet bleiben. Bisher war es so, dass die jeweilige DLL Datei, die die Anwendung verwendet (obwohl in VS C++) erstellt, sich aufs Standard C beschränkt. Ich soll nun diese DLL so erweitern, dass ich eine graphische Ausgabe meiner Testdaten erreiche. Da die Quelldatei der DLL mit der Endung *.c enden muss (Anforderung der exe) bin ich im Moment soweit, dass ich eine zweite Quelldatei mit *.cpp Endung nutze, in der ich dann auch die Bibliotheken für die MFCs einbinden kann........das ist nicht unbedingt das gelbe vom Ei, aber mir ist bislang (dank der Rahmenbedingungen) noch keine bessere Alternative eingefallen....vielleicht ja euch
Oder sollte ich die MFCs vergessen und eine andere Grafikausgabe probieren. Was gäbe es denn da noch für Möglichkeiten, die einigermaßen leicht zu handlen sind?
-
Hi jpr,
na wenn du die *.c sourcen deiner erweiterungs Dll hast, kannst du doch einfach ein neues Projekt in VS anlegen. Z.B sinnvoll wäre da ein WIN32 Project das du im zweiten Schritt als WIN32-Dll Projekt spezifizierst.
In den Projecteinstellungen dieses WIN32-Dll Projektes kannst du die MFC-Unterstüzung dynamisch hinzulinken lassen.
Heißt: Dein *.c kann so bleiben und innerhalb deines gegebenen sources kannst du die MFC Klassen in den MFC Dll's aufrufen und das Ergebnis auswerten.
Das ganze compiliert und gelinkt hast du eine Dll die wie gewünscht ist.
Hoffe es hilft
codeman
-
Hi codeman,
das habe ich gestern schon versucht. Win32 Projekt, Einstellungen->"MFC in einer gemeinsam genutzten DLL verwenden".
Um jetzt aber die MFCs Klassen bekannt zu machen, muss ich doch die Anweisung
#include <afxwin.h> geben. Die Bibliothek wird allerdings nur gelinkt, wenn der Aufruf in einer *.cpp Datei steht (sonst Syntaxfehler). Also hab ich eine cpp Datei, die MFC fähig ist, und meine ursprüngliche c Datei, die nach wie vor "keine Ahnung" hat. In diesem Fall durchläuft die exe erst die cpp Datei, dann die c. Schonmal gut. Aber wie greif ich an beliebiger Stelle des c Codes auf die cpp Routinen zu?
Dank die schonmal für deine Hilfe.
-
Nachtrag:
Es muss natürlich so sein, dass die cpp Routinen im c Code genutzt werden, nicht andersrum, da ja sonst der Programmcode in einer cpp Datei steht und dann meine Exe wieder um Hilfe fiept...