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

Frage Entwicklung C und C++

Mitglied: skid

skid (Level 1) - Jetzt verbinden

02.02.2010 um 13:23 Uhr, 7004 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
Visual Studio
C-Sharp Code in native Code kompilieren?
gelöst Frage von clragonVisual Studio3 Kommentare

Hey Leute Ich hab nach ausgiebiger suche verschiedene Antworten rausbekommen welche mir alle etwas unklar vorkommen. Es geht mir ...

Java
Java kompilieren
Frage von ZockervogelJava5 Kommentare

Hallo, leider habe ich überhaupt keine Ahnung von dem was ich jetzt schreibe :-) Ich habe hier ein .jar ...

Microsoft
Selbst installierte Programme auf C oder D?
gelöst Frage von honeybeeMicrosoft7 Kommentare

Hallo, ich habe eine SSD (Laufwerk C) und eine HDD (Laufwerk D) auf meinem Notebook. Wohin würdet ihr an ...

C und C++
Parameter mit argv übergeben in C-Programm
gelöst Frage von djevil-adC und C++12 Kommentare

Hallo, ich mochte einen Parameter an eine Variable übergeben: Wenn ich printf(argv 1 ); aufrufe funktioniert es, wenn ich aber ip.ki.wVk ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 StundeWindows 10

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 3 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 17 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 21 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...