Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BK Simon

Treue Seele

  • »BK Simon« ist der Autor dieses Themas

Beiträge: 151

Beruf: Student

  • Private Nachricht senden

1

12.10.2012, 04:25

Die exe-Datei richtig an Freunde ohne Visual Studio senden

Guten Morgen, Abend, Tag,

versuche schon länger herauszufinden, wie ich die .exe Datein an Freunde schicken kann die kein Visual Studio haben, so dass sie die .exe Datei einfach öffnen können.

Habe eigentlich versucht zu vermeiden, hierfür einen neuen Thread aufzumachen, da ich denke, dass es so einen bestimmt schon gibt, ich aber leider nicht das richtige Stichwort dafür habe, so einen Thread zu finden.

Meine Software:
Visual Studio 2012 Ultimate
MS Win7 64-Bit

Das Problem ist, schätze ich mal und soweit ich weiß, dass sie die nötigen .dlls nicht haben, die man für die .exe Dateien braucht.
Jetzt bin ich einmal hergegangen und habe mein Projekt erstmal als Release kompiliert und diese daraus entstandene .exe Datei an einen Freund ohne Visual Studio geschickt.
Dieser konnte, wie ich erwartet habe die Datei leider nicht öffnen, da die Fehlermeldung kam, dass eine .dll fehlt.
Diese habe ich dann mit der Windows Suche auf meinem Rechner im System32 Ordner gefunden und ihm auch gesendet.
Daraufhin kam die nächste Fehlermeldung und das Programm brauchte eine weitere .dll die ich leider nicht, durch die Suche von Windows und auch nicht durch die manuelle Suche im System32 Ordner, auf meinem Rechner finden konnte

Ich habe in einem Forum gelesen, dass man irgendwie einstellen kann, dass die verwendeten .dll Dateien mit im Release oder Debug Ordner in meinem Projektverzeichnis erstellt werden können.
Wenn dies möglich ist, wäre es super, wenn mir jemand sagen könnte wo ich dies einstellen könnte da ich unter Erstellen -> Konfigurationmanager nichts dergleichen finden konnte und ich nicht wüsse wo ich noch nach schauen könnte.

Wäre super, wenn mir jemand dabei helfen könnte, denn Programme zu schreiben die meist nur ich öffnen kann ist langsam nicht mehr so das Wahre.:)

Gruß
Simon

Edit1:
Habe es gerade nochmal bei einem anderen Freund ausprobiert und bei ihm klappt es habe ihm 2 .dll Dateien geschickt.
Der vorherige Freunde hat mir wohl den falschen Namen der .dll genannt.

Trotzdem würde ich gerne wissen, ob es nicht noch eine andere Möglichkeit gibt, die .dlls direkt mit der .exe zu verbinden ohne erst die nicht funktionierende .exe auf einem PC zu öffnen um zu schaun welche .dlls er braucht :)

Edit2:
Falls es noch von Bedeutung ist, es waren folgende dlls:
MSVCR110.dll
MSVCP110.dll

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »BK Simon« (12.10.2012, 05:56)


Yannic

unregistriert

2

12.10.2012, 07:21

Wahrscheinlich fehlt ihm eine Runtime.
Btw, wo hast du eigentlich eine Ultimate-Version her? :huh:

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

12.10.2012, 09:04

Du kannst eine Setup erstellen. Da kannst du dann die Redistributable Files mit einbinden. Beim installieren prüft er dann ob diese Daten schon vorhanden sind. Wenn nicht dann installiert er diese eben mit. So machen es die "großen" Spielefirmen auch. Wobei ich persönliche Software mag die ich nicht erst installieren muss. Vor allem wenn es darum geht, dass ich ein Spiel teste. Wenn ich hier im Forum ein Spiel zum testen lade und es erst installieren muss, landet es zum Beispiel direkt im Papierkorb. Ansonsten gibt es noch Tools um rauszubekommen welche DLL'S dein Programm verwendet. Das wäre vielleicht eine Möglichkeit. Eine wirklich schöne Lösung für das Problem ohne Setup gibt es aber soweit ich weiß nicht für das Problem. Oder du sagst deinen Kollegen direkt bescheid, welche Redistributable sie benötigen und gut.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

4

12.10.2012, 09:54

Entweder: Redistributable auf dem Zielrechner installieren. Yannic hat Dir ja den richtigen Link schon geliefert. Du kannst auch einen Installer bauen, der Dein Programm auf die Platte kopiert und dabei gleich das Redist mit installiert, wie Schorsch schon geschrieben hat. Aber einige Leute (mich eingeschlossen) haben Bedenken, wenn sie Installer von unbekannter Quelle bekommen. Mir persönlich ist eine installationsfreie Methode lieber.

Daher folgende Option:

Oder: Du linkst statisch. Also ab in die Projekt-Eigenschaften in Visual Studio und dort die Laufzeitbibliothek von "Multithreaded-DLL" zu "Multithreaded" ändern. Dann werden diese beiden DLLs gar nicht mehr gebraucht, die werden direkt mit in der Exe hinterlegt. Aaaaber: Das kann schiefgehen! Achte darauf, dass wirklich ALLE Projekte und externen Bibliotheken, die Du einbindest, dann die selbe Laufzeitbibliothek nutzen. Sonst wirst Du absonderliche Linkerfehler bekommen. Und manchmal nutzt mal halt Libs, die man nicht selbst gebaut hat, daher ist diese Option nicht immer möglich.

Es gibt auch noch Option c) und die lautet: nimm die DLLs und lege sie einfach neben Deine Exe. Das ist von Microsoft eigentlich unerwünscht, aber ich mache das regelmäßig, wenn ich für jemanden mal schnell eine Exe bauen will.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

12.10.2012, 11:27

Die passende Redistributable installieren ist der vorgesehene Weg. Statisch linken würde ich nur, wenn ich ganz ganz gute Gründe dafür hab. Die dlls einfach mitliefern, ist auch eine sogar offiziell dokumentierte Möglichkeit, aber das würde ich ebenfalls nur mit guten Gründen tun...

6

12.10.2012, 12:11

Oh und weil es gerade passt:
http://www.dependencywalker.com/
Dependency Walker ist ein super Tool um alle benötigten dlls zu finden. Ungemein nützlich bei allen Arten von dll Problemen (weil manchmal ja auch einfach die falsche dll gefunden und benutzt wird).
Lieber dumm fragen, als dumm bleiben!

BK Simon

Treue Seele

  • »BK Simon« ist der Autor dieses Themas

Beiträge: 151

Beruf: Student

  • Private Nachricht senden

7

12.10.2012, 12:54

Erstmal vielen vielen Dank für die ganzen Antworten :)

@Yannic:
Ja mit der Runtime hattest du wohl recht. :)
Die Ultimate Version habe ich über meine Schule bekommen.

@Schorsch:
Du kannst eine Setup erstellen.
Ob ICH das kann mag ich zurzeit noch bezweifeln, werde mich aber darüber informieren, weil ich diese Lösung garnicht mal so schlecht finde :)
Ich denke mal, dass du das Tool meinst, das Jonathan Klein in seinem Post gelinkt hat :)

@Schrompf:
Wie schon gesagt, werde ich mich mal mit deiner Entweder-Option auseinandersetzen und schaun, dass ich die Möglichkeit habe es über so einen Installer zu machen :)
Deine Oder-Option werde ich denke ich eher vermeiden, da wie du ja schon schreibst auch gerne mal Fehler dadurch auftreten und ich als Anfänger habe schon genug mit anderen Fehlern zu kämpfen :P

@dot:
Die Idee einfach den Link für die passende Redistributable mitzuliefern finde ich echt garnicht mal so schlecht, doch weiß ich noch nicht, was meine Freunde besser finden weil sie so ja auch noch zusätzlich was auf ihrem Rechner installieren müssen und ich kann verstehen, dass nicht jeder von ihnen Lust hat nur für z.B. zurzeit ein Konsolen-Snake auch noch etwas runterzuladen :)
Aber schön, dass es diese Möglichkeit gibt und werde diese sicherlich auch noch nutzen :)

Jonathan Klein:
Vielen Dank für den Link und werde ihn direkt mal zu meinen Lesezeichen packen.


Nach eurer echt tollen Hilfe, hier nochmal danke an alle, die auch noch so schnell geantwortet haben, habe ich nun folgendes für die Zukunft vor:
Werde denke ich mal den Leuten, die öfters Programme von mir zum Testen bekommen, empfehlen einfach fix die Redistributable zu installieren und Leuten, die nur mal fix drüberschaun sollen einfach einen .zip Ordner schicken in dem die .exe und die dazugehörigen .dlls sind :)
Falls ich dann irgendwann mal meine Projekte im Projekte Thread vorstelle, denke ich reicht ein einfacher Link zu dem Redistributable den man benötigt.
Grundsätzlich gehe ich mal davon aus, dass der Großteil hier in diesem Forum die .dlls die man dafür benötigt sowieso schon auf dem Rechner hat.
Doch benutze ich ja Visual Studio 2012 und ich gehe mal davon aus, dass noch nicht viele dies auch tun und soweit ich weiß benutzt die 2012er Version wieder andere .dlls als die 2010ner, und deswegen könnte es ja doch so sein, dass welche die .dlls nicht haben.

Gruß
Simon

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

12.10.2012, 12:59

Klingt vernünftig. ;)

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

9

12.10.2012, 13:41

Und von mir ein dicker Pluspunkt für Deine Arbeitsweise! Wir haben hier ja gerade eine Diskussion im Forum zum Umgang mit Fachneulingen, aber der Thread hier ist ein prima Beispiel, wie es klappen kann, wenn alle Seiten freundlich sind und ihren Beitrag leisten. Bleib dran und bleib tapfer!
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

10

12.10.2012, 14:25

Genau das selbe habe ich eben auch schon gedacht. Möglicherweise kann man solche Beispiele ja mal verlinken um zu zeigen wie gut es laufen kann;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige