error LNK2001: Nicht aufgelöstes externes Symbol ""



  • Schuss ins Blaue: Mach das extern C weg.



  • Habe ich gemacht, nun sind die bereits zitierten anderen Fehlermeldungen da. 😕



  • Seh ich jetzt erst: (Handy und so)
    Du hast ja zwei main! Was soll das denn werden?



  • Danke! Damit hast du mir auf jeden Fall einen riesigen Fehlercode abgenommen! Ich habe die 2. main in "championcounter.cpp" in eine void umgewandelt:

    "championcounter.cpp":

    #include "headermain.h"
    #pragma comment(lib, "Ws2_32.lib")
    
    using namespace std;
    
    void berechnung()
    {
    	nullstring = "", lanename = "", championnamen = "", mapname = "", champ1SR = "", champ2SR = "", champ3SR = "", champ4SR = "", champ5SR = "";
    
    	Aat1 = 0, Ahr1 = 0, Aka1 = 0, Ali1 = 0, Amu1 = 0, Ani1 = 0, Ann1 = 0, Ash1 = 0, Bli1 = 0, Bra1 = 0, Cai1 = 0, Cas1 = 0, Cho1 = 0, Cor1 = 0, Dar1 = 0, Dia1 = 0, DrM1 = 0, Dra1 = 0, Eli1 = 0, Eve1 = 0, Ezr1 = 0, Fid1 = 0, Fio1 = 0, Fiz1 = 0, Gal1 = 0, Gan1 = 0, Gar1 = 0, Grag1 = 0, Grav1 = 0, Hec1 = 0, Hei1 = 0, Ire1 = 0, Jan1 = 0, Jar1 = 0, Jax1 = 0, Jay1 = 0, Jin1 = 0, Karm1 = 0, Kart1 = 0, Kas1 = 0, Kat1 = 0, Kay1 = 0, Ken1 = 0, Kha1 = 0, Kog1 = 0, LeB1 = 0, Lee1 = 0, Leo1 = 0, Lis1 = 0, Luc1 = 0, Lul1 = 0, Lux1 = 0, Malp1 = 0, Malz1 = 0, Mao1 = 0, Mas1 = 0, Mis1 = 0, Mord1 = 0, Morg1 = 0, Nam1 = 0, Nas1 = 0, Nau1 = 0, Nid1 = 0, Noc1 = 0, Nun1 = 0, Ola1 = 0, Ori1 = 0, Pan1 = 0, Pop1 = 0, Qui1 = 0, Ram1 = 0, Rene1 = 0, Reng1 = 0, Riv1 = 0, Rum1 = 0, Ryz1 = 0, Sej1 = 0, Sha1 = 0, She1 = 0, Shy1 = 0, Sin1 = 0, Sio1 = 0, Siv1 = 0, Ska1 = 0, Son1 = 0, Sor1 = 0, Swa1 = 0, Syn1 = 0, Tal1 = 0, Tar1 = 0, Tee1 = 0, Thr1 = 0, Tri1 = 0, Tru1 = 0, Try1 = 0, Twis1 = 0, Twit1 = 0, Udy1 = 0, Urg1 = 0, Var1 = 0, Vay1 = 0, Vei1 = 0, Vel1 = 0, Vi1 = 0, Vik1 = 0, Vla1 = 0, Vol1 = 0, War1 = 0, Wuk1 = 0, Xer1 = 0, Xin1 = 0, Yas1 = 0, Yor1 = 0, Zac1 = 0, Zed1 = 0, Zig1 = 0, Zil1 = 0, Zyr1 = 0;
    
    	//Berechnung aller Counterpunkte USW - Riesige Datei!
    
    	if(champ1SR == "Aatrox" || champ2SR == "Aatrox" || champ3SR == "Aatrox" || champ4SR == "Aatrox" || champ5SR == "Aatrox"){
    		Jax1 += 10;
    		Fio1 += 9;
    		LeB1 += 8;
    		Tee1 += 7;
    		Riv1 += 6;
    		Pan1 += 5;
    		Fiz1 += 4;
    		Rene1 += 3;
    		Lee1 += 2;
    	}
    
    	if(champ1SR == "Ahri" || champ2SR == "Ahri" || champ3SR == "Ahri" || champ4SR == "Ahri" || champ5SR == "Ahri"){
    		LeB1 += 10;
    		Tal1 += 9;
    		Swa1 += 8;
    		Kas1 += 7;
    		Ann1 += 6;
    		Dia1 += 5;
    		Malz1 += 4;
    		Yas1 += 3;
    		Fiz1 += 2;
    		Aka1 += 1;
    	}
    
    	if(champ1SR == "Akali" || champ2SR == "Akali" || champ3SR == "Akali" || champ4SR == "Akali" || champ5SR == "Akali"){
    		Lee1 += 10;
    		Gar1 += 9;
    		Mord1 += 8;
    		Rene1 += 7;
    		Ann1 += 6;
    		LeB1 += 5;
    		Lee1 += 4;
    		Fid1 += 3;
    		Rum1 += 2;
    		Swa1 += 1;
    	}
    
    	if(champ1SR == "Alistar" || champ2SR == "Alistar" || champ3SR == "Alistar" || champ4SR == "Alistar" || champ5SR == "Alistar"){
    		Jan1 += 10;
    		Vay1 += 9;
    		Lul1 += 8;
    		Cho1 += 7;
    		Ola1 += 6;
    		Sor1 += 5;
    		Zyr1 += 4;
    		Morg1 += 3;
    		Ahr1 += 2;
    		Cai1 += 1;
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    
    	if(champ1SR == "" || champ2SR == "" || champ3SR == "" || champ4SR == "" || champ5SR == ""){
    
    	}
    	return 0;
    }
    

    "headermain.h":

    #include <iostream>
    #include <string>
    #include <fstream>
    #include <iosfwd>
    #pragma comment(lib, "Ws2_32.lib")
    
    using namespace std;
    
    string nullstring, lanename, championnamen, mapname, champ1SR, champ2SR, champ3SR, champ4SR, champ5SR;
    
    string Aatrox, Ahri, Akali, Alistar, Amumu, Anivia, Annie, Ashe, Blitzcrank, Brand, Caitlyn, Cassiopeia, ChoGath, Corki, Darius, Diana, DrMundo, Draven, Elise, Evelynn, Ezreal, Fiddlesticks, Fiora, Fizz, Galio, Gangplank, Garen, Gragas, Graves, Hecarim, Heimerdinger, Irelia, Janna, JarvanIV, Jax, Jayce, Jinx, Karma, Karthus, Kassadin, Katarina, Kayle, Kennen, KhaZix, KogMaw, LeBlanc, LeeSin, Leona, Lissandra, Lucian, Lulu, Lux, Malphite, Malzahar, Maokai, MasterYi, MissFortune, Mordekaiser, Morgana, Nami, Nasus, Nautilus, Nidalee, Nocturne, Nunu, Olaf, Orianna, Pantheon, Poppy, Quinn, Rammus, Renekton, Rengar, Riven, Rumble, Ryze, Sejuani, Shaco, Shen, Shyvana, Singed, Sion, Sivir, Skarner, Sona, Soraka, Swain, Syndra, Talon, Taric, Teemo, Thresh, Tristana, Trundle, Tryndamere, TwistedFate, Twitch, Udyr, Urgot, Varus, Vayne, Veigar, VelKoz, Vi, Viktor, Vladimir, Volibear, Warwick, Wukong, Xerath, XinZhao, Yasuo, Yorick, Zac, Zed, Ziggs, Zilean, Zyra;
    
    int Aat1, Ahr1, Aka1, Ali1, Amu1, Ani1, Ann1, Ash1, Bli1, Bra1, Cai1, Cas1, Cho1, Cor1, Dar1, Dia1, DrM1, Dra1, Eli1, Eve1, Ezr1, Fid1, Fio1, Fiz1, Gal1, Gan1, Gar1, Grag1, Grav1, Hec1, Hei1, Ire1, Jan1, Jar1, Jax1, Jay1, Jin1, Karm1, Kart1, Kas1, Kat1, Kay1, Ken1, Kha1, Kog1, LeB1, Lee1, Leo1, Lis1, Luc1, Lul1, Lux1, Malp1, Malz1, Mao1, Mas1, Mis1, Mord1, Morg1, Nam1, Nas1, Nau1, Nid1, Noc1, Nun1, Ola1, Ori1, Pan1, Pop1, Qui1, Ram1, Rene1, Reng1, Riv1, Rum1, Ryz1, Sej1, Sha1, She1, Shy1, Sin1, Sio1, Siv1, Ska1, Son1, Sor1, Swa1, Syn1, Tal1, Tar1, Tee1, Thr1, Tri1, Tru1, Try1, Twis1, Twit1, Udy1, Urg1, Var1, Vay1, Vei1, Vel1, Vi1, Vik1, Vla1, Vol1, War1, Wuk1, Xer1, Xin1, Yas1, Yor1, Zac1, Zed1, Zig1, Zil1, Zyr1;
    
    	class lanes{
    public:
    	lanes();
    	~lanes();
    
    	void getLanename();
    
    	void top();
    
    	void jungle();
    
    	void mid();
    
    	void adc();
    
    	void supp();
    
    	void all();
    
    };
    
    class championcounter{
    	public:
    
    		championcounter();
    		~championcounter();
    
    		void berechnung();
    
    };
    

    Nun habe ich jedoch noch 2 Fehler. Wäre nett, wenn du die eben lösen könntest 😃

    Fehlermeldungen:

    1>------ Erstellen gestartet: Projekt: ChampionCounterSelect, Konfiguration: Debug Win32 ------
    1>  championcounter.cpp
    1>c:\users\tobias kranauge\documents\visual studio 2010\projects\championcounterselect\championcounterselect\championcounter.cpp(136): error C2562: 'berechnung': 'void'-Funktion gibt einen Wert zurück
    1>          c:\users\tobias kranauge\documents\visual studio 2010\projects\championcounterselect\championcounterselect\championcounter.cpp(6): Siehe Deklaration von 'berechnung'
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

  • Mod

    Das ist nur ein Fehler. Lies die Fehlermeldung! Eindeutiger geht es doch wohl kaum. Verstehst du irgendetwas da dran nicht?



  • return in void



  • Ja, stimmt das war sehr offensichtlich :o Nun habe ich wieder den Fehler, dass die einzelnen integer und strings bereits in "championcounter.obj" definiert sind und mit diesem Fehler komme ich echt nicht klar.

    Hier ein Ausschnitt von den beiden Fehlermeldungen, die sich natürlich bei allen Integern und Strings wiederholen:

    1>main.obj : error LNK2005: "int Jan1" (?Jan1@@3HA) ist bereits in championcounter.obj definiert.
    1>main.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > Zyra" (?Zyra@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) ist bereits in championcounter.obj definiert.
    

    Danke für die Hilfe!



  • Ich sagte doch: keine globalen Variablen!
    Das Problem liegt daran, dass include dumm ist.
    Das ist reine Textersetzung.
    Am Ende hast du dann folgendes:

    main.cpp:
    int foo, bar...;
    string a, b,..;
    championcounter.cpp:
    int foo, bar...;
    string a, b,...;
    

    Und darüber beschwert sich der Linker.
    Wenn du das so machen willst, musst du die Variablen im Header nur deklarieren.
    Das geht, indem du da extern vorschreibst.

    extern int foo, bar,...;
    

    Zusätzlich müssen sie dann aber auch in einer cpp definiert werden, das ist einfach das selbe ohne extern.
    Aber wie du vielleicht selber gemerkt hast, ist dein Programm ein wenig lang und kompliziert. Ich versuch mal durchzublicken, was das machen soll und es dann ein wenig kürzer zu halten.

    Edit: Ok, ich blick da nicht durch, ob es da irgendein System hinter gibt. Dafür müste man schon LOL kennen.



  • Hallo Leute,

    der ganze Code ist doch völliger Müll. Unterstützt ihn doch nicht bei der Detail-Fehlersuche, wenn die Grundlagen nicht sitzen.

    Nur so als Beispiele:

    // Hier werden einfach leere Strings angelegt, gemeint ist aber wohl ein String-Array mit den Namen als Inhalte!!!
    string Aatrox, Ahri, Akali //, ...
    
    // Hier sollen wohl Funktionen aufgerufen werden (LOL)
    &lanes::getLanename;
    

    Sorry SuperAuge, aber fange noch mal ganz von vorne an und schreibe ersteinmal kleinere Programme (damit du nicht noch weiter so viel tippst und dann wieder verwerfen mußt).
    Als Stichworte gebe ich dir Arrays bzw. std::vector<T>. Wenn du diese beherrschst, dann wird dein Code nur noch einige Dutzend Zeilen lang sein (und nicht hunderte oder sogar tausende).



  • Vielen Dank für deine Hilfe, Nathan.

    Ich glaube ich sollte den Rat von Th69 befolgen und mir nochmal alle Grundlagen zu C++ angucken! Auch dir danke ich natürlich 🙂


Anmelden zum Antworten