skid
Goto Top

Kompilieren eines C-Programms

Hallo,

ich hoffe das ich hier richtig bin mit meiner Frage !?

Zuerst möchte ich anmerken das ich keine Ahnung von C / C++ habe aber dennoch versuche ein Programm zu kompilieren.

Ich habe mir ein Programm mit Quelldateien (ich denke diese sind auch vollständig) runtergeladen und ausgeführt - klappt alles soweit ganz gut!
Das Programm überwacht ein Verzeichnis auf Änderungen.
Falls es jemanden Interessiert : http://www.codeproject.com/KB/files/FileSpyArticle.aspx
Hier kann man sich das auch runterladen.....

Das Programm ist so programmiert das es auf das Verzeichnis C:\Program Files zugreift.
Nun möchte ich gerne diesen Pfad ändern - Die Datei wo der Pfad hinterlegt ist habe ich gefunden und angepasst nur ohne es vorher zu kompilieren bringt mir das ganze nichts.
Die Dateien haben die Endungen .clw, .cpp, .dsw, .dsp, .h und .rc

Die Datei wo die Änderung vorgenommen worden ist hat die Endung .cpp
Zum Kompilieren habe ich den Pelles C

So, meine Frage jetzt : Wie schaffe ich es aus den ganzen Dateien wieder eine .exe zu machen ?


Gruss
SKID

Content-Key: 134949

Url: https://administrator.de/contentid/134949

Printed on: April 26, 2024 at 21:04 o'clock

Member: kingkong
kingkong Feb 02, 2010 at 12:46:48 (UTC)
Goto Top
Hi Skid, ich kenne zwar den Pelles C nicht, aber da sollte es nicht anders sein als bei anderen Compilern auch. Du rufst die Exe auf und übergibst dem Compiler die Dateien als Parameter. Oder ist dieser Pelles C vielleicht eine komplette Entwicklungsumgebung wie z.B. Microsoft Visual Studio Express 2008 ? Dann legst du ein neues Projekt an und bindest die Header-Dateien (.h) und die Quellcode-Dateien (.cpp) in den richtigen Ordnern an. (Zur Info: die Headerdateien enthalten quasi eine Inhaltsübersicht aller Methoden bzw. Funktionen, und die Quellcode-Dateien sagen, was in einer Funktion dann ausgeführt wird)

Hilft das? Ansonsten könntest du auch probehalber mal auf besagte MS-Umgebung umsteigen. Die ist komplett kostenlos und trotzdem für kommerzielle Einsätze lizenziert.
Member: skid
skid Feb 02, 2010 at 13:50:11 (UTC)
Goto Top
Hi,

danke für die schnelle Antwort.
Habe das mal so versucht wie Du es beschrieben hast....
Die Exe hab ich aufgerufen aber da konnte ich nichts mehr bearbeiten.
Also hab ich ein neues Projekt angelegt und die ganzen .h und .cpp datein hinzugefügt.
Mit einigen konnte Er nix anfangen aber der Rest wurde hinzugefügt.
Eine neue EXE konnte ich dann doch nicht erstellen da eine weitere .h Datei wohl fehlt.
Das ganze ist dann wohl doch nicht vollständig.

Aber jetzt weiß ich zumindest wie ich bei sowas vorgehen muss!
Member: kingkong
kingkong Feb 02, 2010 at 20:02:10 (UTC)
Goto Top
Sorry skid,

vielleicht hast Du mich mit der exe falsch verstanden. Ich meine natürlich die exe des Compilers, nicht des Programms, das Du neu erstellen möchtest.
Ein Compiler selbst ist nur ein Programm, das den Quelltext in Maschinencode übersetzt. Dann kommen dann sogenannte Objects raus und diese Objects werden dann von einem Linker zusammengesetzt zum vollständigen Programm. Meistens ist der Linker aber (insbesondere bei Windowscompilern) mit enthalten.

Eine Entwicklungsumgebung ist ein Stück größer. Es enthält (meist) eine grafische Oberfläche mit Quellcodeeditoren und anderen Werkzeugen, außerdem einen Compiler und auch einen Linker. Und diese IDE erledigt dann alles.
Member: kingkong
kingkong Feb 04, 2010 at 13:20:39 (UTC)
Goto Top
So, nun habe ich es selbst probiert (mit Visual Studio 2008 Professional, aber das sollte keinen Unterschied machen) - bitte erst den ganzen Beitrag lesen (v.a. die Hinweise unten, bevor du alles umsetzt)!

Das einfachste wäre, wenn Du dir das Programm Visual Studio 2008 Express herunter lädst. Das Projekt wurde nämlich mit einem Vorgänger dieses Programms erstellt. Wenn du dann die Datei FileSpy.dsw lädst (sie wird bezeichnet als VC++ 6 Projektdatei) dann sollte er dich fragen, ob er das Projekt konvertieren darf, weil er ansonsten nicht weitermachen kann. Stimme dem zu und Du siehst eine Programmieroberfläche. In dieser gibt es einen grünen Play-Knopf. Wenn Du den drückst will er das Projekt kompilieren und linken (alternativ geht auch F5). Allerdings kam bei mir beim ersten Mal immer eine Fehlermeldung des Linkers, dass er einen internen Fehler hat. Beim zweiten Mal kam der Fehler nicht mehr. Jetzt sollte die Programmoberfläche erscheinen und das Verzeichnis Programme überwachen. Testweise könntest Du dort einen neuen Ordner erstellen, um zu sehen, dass das Programm auch etwas tut.

Das erstellte Programm liegt in einem Unterverzeichis "Debug". Wenn Du das Programm allerdings auf anderen als dem Computer, auf dem das Programm erstellt wurde, ausführen möchtest, musst Du entweder noch die Standard-DLL-Datei von VisualStudio mitliefern, in der dann bestimmte Windows-Funktionen enthalten sind, oder Du kompilierst das Programm so, dass die Funktionen (statisch) enthalten sind. Das machst Du unter "Projekt->FileSpy-Eigenschaften->Konfigurationseigenschaften-> C/C++ -> Codegenerierung" . Dort gibt es den Punkt Laufzeitbibliothek. Die zwei Einträge, in denen von DLL die Rede ist, bewirken, dass die Funktionen ausgelagert sind in der genannten DLL. Die anderen beiden sind statisch. Ich benutze dann immer die Debug-Version, weil das bei mir noch nie zu Programmfehlern geführt hat, die andere dagegen schon. Nur ist die Debug-Variante eben ca. 0,8MB größer...

HINWEISE:
1.) Ich habe es auf Windows 7 probiert, allerdings musste ich dafür die Versionsgrenze anheben. Hintergrund ist, dass in der Datei sdkver.h (oder ähnlich) eine Abhängigkeit zwischen einer bestimmten Version des Internet Explorers und der Windows Version geschaffen wurde.
Windows 7 und Internet Explorer 8 kannte er allerdings nicht und es kam ein Compiler-Fehler.
Deshalb habe ich die Versionsgrenze, die in der Datei stdafx.h unter " #define _WIN32_WINNT 0x400" gesetzt wird, von Windows NT (0x400) auf Windows XP (0x501) geändert. Auch wenn Du kein Windows 7 hast und es deshalb vielleicht sogar ohne diese Änderung laufen würde wäre meine Empfehlung, sofern du kein Windows NT oder 2000 mehr verwendest, diese Änderung ebenso durchzuführen.
2.) Wenn die Konvertierungsnachfrage nicht kommen sollte kann das VS 2008 Express nicht - dann melde dich nochmal. Dann kann ich Dir vielleicht trotzdem helfen.
Member: skid
skid Feb 05, 2010 at 08:13:13 (UTC)
Goto Top
Hi,

danke für die ausführliche Anleitung !

Werde mir dann mal das Visual Studio 2008 Express runterladen und versuchen das mal so umzusetzen.
Melde mich dann falls es nicht funktionieren sollte....
Member: skid
skid Feb 05, 2010 at 09:30:11 (UTC)
Goto Top
So, habe das Visual Studio 2008 runtergeladen und damit die Datei FileSpy.dsw geladen.
Die Versionsgrenze hab ich auch auf Windows XP geändert - habe hier auch das XP.
Nur wenn ich den grünen Play-Knopf drücke bekomme ich jedesmal die Fehlermeldung: Fehler beim Erstellen. Den Debug-Ordner legt er zwar an aber es gibt keine neue .exe

Vielleicht liegt´s ja auch an meinem System ?!
Member: kingkong
kingkong Feb 05, 2010 at 14:57:50 (UTC)
Goto Top
Und Du hast das auch zweimal direkt hintereinander kompiliert / gelinkt? Denn wie gesagt hatte ich beim ersten Durchgang auch immer einen Linker-Fehler.
Und welcher Fehler ist es denn genau? Im unteren Teil der Umgebung steht die Ausgabe, da sollte auch der Fehlercode dabei stehen (wie zum Beispiel LNK100 o.ä.)

Dass es an Deinem System liegt glaube ich erstmal nicht...

Achso, nur der Sicherheit halber: Du verwendest auch VS 2008 Express C++ und keines der anderen drei verfügbaren Programme, ja?
Member: skid
skid Feb 08, 2010 at 08:53:48 (UTC)
Goto Top
Ja, sogar mehr als zweimal......
Ich habe auch das Programm: Microsoft Visual C++ 2008 Express Edition

Hier die Ausgabe im Log:

1>------ Erstellen gestartet: Projekt: FileSpy, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>StdAfx.cpp
1>d:\filespy\filespy\stdafx.h(17) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "afxwin.h": No such file or directory
1>Browseinformationsdatei wird erstellt...
1>Microsoft Browse Information Maintenance-Programm Version 9.00.30729
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>BSCMAKE: error BK1506 : Datei ".\Debug\FileSpyDoc.sbr" kann nicht geöffnet werden: No such file or directory
1>Das Buildprotokoll wurde unter "file://D:\FileSpy\FileSpy\Debug\BuildLog.htm" gespeichert.
1>FileSpy - 2 Fehler, 0 Warnung(en)
Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========