Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Kompilieren eines C-Programms

Frage Entwicklung C und C++

Mitglied: skid

skid (Level 1) - Jetzt verbinden

02.02.2010 um 13:23 Uhr, 6879 Aufrufe, 8 Kommentare

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
Mitglied: kingkong
02.02.2010 um 13:46 Uhr
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.
Bitte warten ..
Mitglied: skid
02.02.2010 um 14:50 Uhr
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!
Bitte warten ..
Mitglied: kingkong
02.02.2010 um 21:02 Uhr
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.
Bitte warten ..
Mitglied: kingkong
04.02.2010 um 14:20 Uhr
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.
Bitte warten ..
Mitglied: skid
05.02.2010 um 09:13 Uhr
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....
Bitte warten ..
Mitglied: skid
05.02.2010 um 10:30 Uhr
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 ?!
Bitte warten ..
Mitglied: kingkong
05.02.2010 um 15:57 Uhr
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?
Bitte warten ..
Mitglied: skid
08.02.2010 um 09:53 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...