Programm läuft nur bei mir

Ich habe ein auf MFC basierendes Programm mit Microsoft Visual Studio .NET geschrieben. Es läuft bei mir problemlos, aber wenn ich es meinen Freunden zur Verfügung stellen will, gibt es eine Fehlermeldung in der steht das die MFC71D.DLL vermisst wird. Wie kann ich das Programm schreiben o. was muss ich wie einstellen um das Programm auch ohne diiese dll laufen zu lassen?

grüße DR

Hallo,

was muss ich wie
einstellen um das Programm auch ohne diiese dll laufen zu
lassen?

Du musst die benötigten Bibliothek(en) mitliefern oder statisch linken. D.h. die Bibliotheken werden im Programmcode selbst abgelegt. Das führt u.U. allerdings zu recht unhandlichen Programmen.

Gruß

Fritze

Hallo, nun in der richtigen Gruppe :smile:
Je nachdem, ob Du das Programm als Debug oder Release-Build übersetzt, werden unterschiedliche Bibliotheken dazugebunden.
Diese Bibliotheken müssen zur Laufzeit dann auch vorhanden sein, sonst geht’s nicht.
Bei MFC71D.DLL handelt es sich um die Debug-Version der MFC-Bibliothek, die ist in aller Regel nur auf Rechnern mit installierter Entwicklungsumgebung vorhanden.
Bei MFC kannst Du aber auch in Deinen Projekteinstellungen festlegen, dass MFC nicht als gemeinsam genutzte Datei (also DLL) verwendet werden soll (dann muss sie separat auf dem Zielsystem vorliegen), sondern statisch mit zu Deinem Programm dazugebunden werden soll.
Dann wird dein Programm halt ca. 1,5MB größer als „normal“.

Du kannst Dir im VS aber auch ein Setup-Projekt anlegen und Dir so ein Installationspaket bauen. VS ist schon recht gut darin, festzustellen, was Deine Anwendung noch an Abhängigkeiten hat und die benötigten DLLs auch mit ins Paket aufzunehmen.
Deine Freunde müssen dann einfach die entstehende Installationsroutine ausführen und somit Dein Pgm installieren, dann sollte es auch dort laufen.

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

das Problem sollte sich daruch loesen lassen, das du vor der Weitergabe das Projekt komplett im Release-Mode compilierst.
Dann braucht nur das .NET Framework auf der Zielmaschine installiert sein und es wird funktionieren.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke an alle, habe das Poblem gelöst. Das mitliefern der dll war mir zu blöd und so habe ich die Bibliotheken statisch gelinkt.
PS: das ging mit Projekt–>Eigenschaften von -->Konfigurationeigenschaften
–>Verwndung von MFC–>MFC in einer statischer Bibliothek verwenden

gruß DR

Hallo,

das funktioniert zwar, ist aber nicht erlaubt: die DLLs mit „D“ sind Debug-Versionen und dürfen nicht mit dem Programm weitergeliefert werden.

Erklärung: es gibt DLLs mit und ohne D, die ohne D sind zur Weiterverteilung bestimmt und können mitgeliefert oder eben, wie du es gemacht hast, fest eingebunden werden, über jeweilige Vor- und Nachteile könnte man einen getrennten Streit anfangen. Die D-ebugversionen sind nur zur Installation auf dem Entwicklungsrechner bestimmt.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

das funktioniert zwar, ist aber nicht erlaubt: die DLLs mit
„D“ sind Debug-Versionen und dürfen nicht mit dem Programm
weitergeliefert werden.

Und was kann ich stattdessen machen?

gruß DR

Hallo Peter!

Sorry, aber das ist Quark.

  1. Man braucht das .NET Framework NICHT für MFC Anwendungen.
  2. Selbst, wenn das Projekt als Release-Build erstellt, sind die benötigten DLLs nicht „automatisch“ überall vorhanden. Die Wahrscheinlichkeit, dass ein anderes Programm bereits die MFC71-DLL installiert hat, ist zwar höher, als beim Debug-Build, aber keinesfalls ausreichend für eine solche Aussage.

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Release-Build einstellen. Dann wird die MFC71.dll (ohne ‚D‘) dazugebunden und gut.

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Release-Build einstellen. Dann wird die MFC71.dll (ohne ‚D‘)
dazugebunden und gut.

Gruß,
Martin

Also einfach bei Ersetlle–>Konfigurationsmanager–>Konfiguration d. aktuellen Projektmappe=Relsease.(?)

Danke schön

gruß DR

Zum Beispiel, ja.
Normalerweise hast Du in Deinen Toolbars auch noch eine DropDown-Box, in der Du zwischen Debug und Release umschalten kannst, darüber geht’s auch.

Gruß,
mav

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]