Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: skid

skid (Level 1) - Jetzt verbinden

02.02.2010 um 13:23 Uhr, 7216 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 ..
Ähnliche Inhalte
C und C++
C Programm- Sprachumschaltung
Frage von SanastasiaC und C++6 Kommentare

Hallo, ich möchte ein programm schreiben welches einen Text in Abhängigkeit von der gesetzen locale ausgibt. also wenn ich ...

C und C++
GitHub c Programm kompilieren
gelöst Frage von chri.sC und C++3 Kommentare

Hallo, ich hänge gerade beim evaluieren einer Software und zwar würde ich gerne das Projekt testweise einsetzen. Allerdings sind ...

C und C++

Programm Ausführen bei C++ Editor Dev-C++

gelöst Frage von DomiITC und C++5 Kommentare

Liebes Forum, ich bin Anfänger in der Programmierwelt und habe beschlossen mit C zu beginnen. Mit Hilfe eines Youtube ...

C und C++

Von C auf C++ umsteigen

Frage von jangruC und C++3 Kommentare

Sehr geehrte Community, wie Sie meiner Überschrift bereits entnehmen konnten, habe ich vor von C auf C umzusteigen. Da ...

Neue Wissensbeiträge
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 17 StundenDatenschutz1 Kommentar

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 20 StundenSicherheit1 Kommentar

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 1 TagInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 2 TagenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Glasfaserkabel verlegen und Anschlüsse setzen
Frage von LLL0rdLAN, WAN, Wireless21 Kommentare

Hallo Leute, ich muss demnächst ein Netzwerkkabel auf einer Länge von ca. 70 Metern verlegen. Das Netzwerkkabel soll dabei ...

Windows Server
Mac Rechner im Windows Netzwerk - was jetzt?
gelöst Frage von Kopfg3ldWindows Server18 Kommentare

Hallo zusammen, ich habe folgende Herausforderungen. Aber erst mal was kurz zum Netzwerk - Windows Server (ältester ist ein ...

Microsoft Office
Sharepoint 2016 mag keine Umlaute in .docx-Titeln
gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Nutzt hier jemand Sharepoint? Könnt Ihr, unabhängig von der Sharepointversion, bitte einen Test machen? Ladet ein .docx ...

Basic
VBS soll alle Ordner auswählen, die im Startmenu angezeigt werden
Frage von Senseless-CreatureBasic12 Kommentare

Guten Morgen - gibt es eine Möglichkeit, per VBS das Startmenu in Win10 zu modifizieren? Ich beherrsche VBS mittlerweile ...