Dev C++ Projekt fehler!

stinger

Grünschnabel
Hi,

Hab folgendes Problem. Schrieb gerade auf dem Dev C++ zwei kleine programme. Diese Speicherte ich im gleichen Projekt ab.

Nun bringt mir aber der Compiler folgende Fehlermeldung:
"client.c D:\cpp\Socket\client.o multiple definition of `startWinsock'"

und

"client.c D:\cpp\Socket\client.o(.text+0x1b6) multiple definition of `main'"

Diese zwei Fehlermeldungen kann ich beheben in dem ich für jede Datei ein eigenes Projekt öffne und sie darin speicher. Es dürfen aber nie beide Projekte offen sein. Irgendwie compiliert der Compiler beide Dateien und beschwert sich dann das ein "int main()" zuviel ist.

Hat jemand mit dieser Software erfahrung und kann mir weiterhelfen? Ich würde gerne beide Dateien in einem Projekt haben.

THX schonmal im voraus!

mfg
Patrick
 
Alle Dateien innerhalb eines Projektes sollten insgesamt nur eine MAIN-Funktion haben.
Ansonsten kann man normalerweise mehrere Projekte mit ins aktuelle Projekt mithineinnehmen.

Aber eigentlich versteh ich Dein Anliegen mit den 2 Main-Funktionen nicht.
 
Ich erklär mal :

Ich hab zwei Sockets.
Einen Client - und einen Serversocket geschrieben.
Der jeweilige Socket liegt in der Datei Client.C und Server.C
(welche im gleichen Projekt sind).

Will nun ein paar spielereien mit ihnen machen.
Däfür muss ich zuerst den Server- und dann den Clientsocket starten.
Wenn ich die zwei Programme getrennt voneinander laufen lasse, funktionieren sie einwandfrei(bis dahin wo sie kommunizieren sollen).

Nun schreit der Compiler aber wegen den "main" bzw "startWINsock()" Teilen in zwei verschiedenen Dateien und sagt es wären zuviele.

Hab ich es einigermaßen klar beschrieben? :)


mfg
patrick
 
Zwei Main-Funktionen in einem Projekt kannst Du halt nicht haben!
Damit Du c-Files zu verschiedenen Zwecken nutzen kannst bedien Dich doch einfach mal den Präcompiler-Anweisungen und klammere Deine main-Funktion mit #ifdef und #endif aus
 
Zu startWinSock():
Wenn die Funktionen unterschiedlich sind einfach in startSWinSock() und startCWinSock() umbenennen (für Server und Client). Wenn sie gleich sind Funktion in separate cpp.Datei kopieren und eine Header-Datei erstellen mit der Funktionsdefinition und in die beiden anderen cpp-Dateien mit #include "separate Datei.h" einbinden. So läßt sich die Funktion dann auch in weiteren Projekten gleich weiterverwenden.
Zu dem main() - Problem:
Definitiv darf innerhalb eines Projektes nur einmal eine Funktion main() auftauchen.
Eine Möglichkeit wäre, die main funktion des clients in StarteClient() umzubenennen und diese z.B. in der cpp-Datei des Servers aufzurufen (Nachdem der Server z.B. fehlerfrei gestartet wurde).

Hoffe, ich hab' s richtig verstanden.
cu
 
Einfacher wäre doch an der Stelle, wenn du schon mit 2 Programmen arbeitest auch mit 2 Projekten zu arbeiten. D.H auch 2*DEV-C++ öffnen.
Gemeinsam genutzte Funktionen, kannst du in einer gemeinsam verwendeten Library kapseln.

Gruß Homer
 
Zurück