Mindestens ein mehrfach definiertes Symbol gefunden.



  • Hallo,

    Ich hab problem ich hab ein Projekt und da befinden sich 2 c Dateien.
    in der ersten Datei namen stat.c befindet sich das hier :

    #include <stdio.h> 
    #include <conio.h> 
    #include "col_conio.h" 
    
    main() 
    { 
        int x=1; 
        int const anzahl = 6; 
        int i=1; 
        float zahl; 
    
        printf(" \n \t \t S T A T I S T I K \n"); 
    
        getch(); 
    
        printf(" \n \t*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* \n "); 
    
        getch(); 
    
        clrscr(); 
    
        for( x = 1; x <= anzahl; x++ ) { 
    
            printf( "Bitte geben Sie den %i ten Umsatz ein \n ", i++ ); 
            scanf( "%f", &zahl ); 
        } 
    }
    

    und in der 2 ten Datei namen strings.c hierdas:

    #include <stdio.h>
    #include "col_conio.h"
    
    main()
    
    {
    	char * a = ("Hello world");
    	char * b = ("Hello Chico");
    
    	printf("Es werden 2 Strings angezeigt. "
    		"\n\t===============\n"
    		"\n\t===============\n"
    		"\n\t===============\n"
    		"Druecken Sie dazu bitte eine belibige Taste!");
    	getch();
    
    	printf(" yaaaa \n a= %s , unsere \n b=%s  sooo!", a, b);
    
    	system("Pause");
    
    }
    

    mein problem ist das diese Fehlermeldung angezeigt wird wenn ich auf komplemieren drücke.

    strings.obj : error LNK2005: _main ist bereits in stat.obj definiert.
    1>C:\Users\hasso\Documents\Visual Studio 2008\c++\helloworld\zeichenkette\zeichenkette\zeichenkette\datei\Release\datei.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.

    Muss man etwas an der konfiguratinseinstellung ändern? bin 😕

    Lg hasso



  • das symbol 'main' darf es nur einmal geben. das ist der name der funktion, mit der ein C-programm anfängt. wenn du beide codes in einem programm brauchst, dann benenn' die eine funktion um und ruf sie von der einzigen 'main' aus auf. wenn du zwei getrennte programme (also auch zwei 'main' funktionen brauchst), dann darfst du beide codes nicht zusammenlinken, sondern musst den linkerdurchlauf für beide getrennt ausführen.
    🙂



  • Hallo,

    linking-freak schrieb:

    das symbol 'main' darf es nur einmal geben. das ist der name der funktion, mit der ein C-programm anfängt. wenn du beide codes in einem programm brauchst, dann benenn' die eine funktion um und ruf sie von der einzigen 'main' aus auf. wenn du zwei getrennte programme (also auch zwei 'main' funktionen brauchst), dann darfst du beide codes nicht zusammenlinken, sondern musst den linkerdurchlauf für beide getrennt ausführen.
    🙂

    Ich hab im Buch erlenkötter gelesen das das main für jedes Programm ein mal verwendet werden muss.wie soll ich die funktion unbennen. soll ich anstatt main was anderes einfasch schreiben? bzw.

    wie funktioniert denn das mit dem linkdurchlauf getrennt.

    über eine detalierte antwort wär ich dir wirklich sehr dankbar!

    lg hasso



  • hasso schrieb:

    Ich hab im Buch erlenkötter gelesen das das main für jedes Programm ein mal verwendet werden muss.

    ja, das stimmt. wenn du ein programm bauen lässt, dann fügt der linker deine codes + startup-code + statische libraries zu einer einheit zusammen. der startup-code ist dabei das, was vom OS angesprungen wird, wenn du das programm ausführen lässt. er initialisiert globale und statische variablen usw, und springt dann zur 'main' funktion.

    hasso schrieb:

    wie soll ich die funktion unbennen. soll ich anstatt main was anderes einfasch schreiben? bzw.

    wenn's 'main' schon gibt, dann musst du die andere funktion umbenennen. aber das wäre bei allen funktionen ebenso, die den gleichen namen haben (ausser sie sind 'static' und stecken in verschiedenen dateien).

    hasso schrieb:

    wie funktioniert denn das mit dem linkdurchlauf getrennt.

    das kommt auf deine programmierumgebung, projektverwaltung usw. an. bei den meisten kannste verschiedene projekte zusammenfassen, mit verschiedenen build-konfigurationen mehrere executables aus dem gleichen code erzeugen etc. musste mal nachlesen wie das bei dir so geht.
    🙂



  • hi

    ich find diese variante besser. ich nutze den visual studio 2008 . falls du oder jemand anders den selben nutzt uuund zufälígerweise auch wie man das mit dem getrennten linkdurchlauf macht . wär supper.

    hasso schrieb:

    wie funktioniert denn das mit dem linkdurchlauf getrennt.

    das kommt auf deine programmierumgebung, projektverwaltung usw. an. bei den meisten kannste verschiedene projekte zusammenfassen, mit verschiedenen build-konfigurationen mehrere executables aus dem gleichen code erzeugen etc. musste mal nachlesen wie das bei dir so geht.
    :)[/quote]

    lg hasso



  • Alle Quellcodedateien eines Projekts werden im Visual Studio zu einem Programm gelinkt. Willst du etwas nicht dazulinken, dann wirf es aus dem Projekt.

    Möchtest Du mir zwei Gefallen tun? Bitte, bitte lerne Zitieren und bitte, bitte ließ Deine Posts vor dem Absenden mindestens einmal durch.

    greetz, Swordfish



  • ok sorry! in zukunft werd ich drauf achten. 😉


Anmelden zum Antworten