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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 134949
Url: https://administrator.de/contentid/134949
Ausgedruckt am: 05.11.2024 um 19:11 Uhr
8 Kommentare
Neuester Kommentar
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.
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.
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.
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.
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.
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.
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?
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?