Linker Fehler ausmerzen



  • ich hab ein Haufen Linkerfehler:

    1>Command and Conquer Profil Cracker.obj : error LNK2028: Nicht aufgelöstes Token (0A00002E) ""public: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall FolderContentClass::FolderContent(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?FolderContent@FolderContentClass@@$$FSM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HV23@@Z)", auf das in Funktion ""private: void __clrcall CommandandConquerProfilCracker::Form1::button1_Click_1(class System::Object ^,class System::EventArgs ^)" (?button1_Click_1@Form1@CommandandConquerProfilCracker@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)" verwiesen wird.
    1>Command and Conquer Profil Cracker.obj : error LNK2028: Nicht aufgelöstes Token (0A000038) ""extern "C" int __cdecl closedir(struct DIR *)" (?closedir@@$$J0YAHPAUDIR@@@Z)", auf das in Funktion ""class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall FolderContent(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?FolderContent@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HV12@@Z)" verwiesen wird.
    1>Command and Conquer Profil Cracker.obj : error LNK2028: Nicht aufgelöstes Token (0A000039) ""extern "C" struct dirent * __cdecl readdir(struct DIR *)" (?readdir@@$$J0YAPAUdirent@@PAUDIR@@@Z)", auf das in Funktion ""class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall FolderContent(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?FolderContent@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HV12@@Z)" verwiesen wird.
    1>Command and Conquer Profil Cracker.obj : error LNK2028: Nicht aufgelöstes Token (0A00003A) ""extern "C" struct DIR * __cdecl opendir(char const *)" (?opendir@@$$J0YAPAUDIR@@PBD@Z)", auf das in Funktion ""class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall FolderContent(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?FolderContent@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HV12@@Z)" verwiesen wird.
    1>Command and Conquer Profil Cracker.obj : error LNK2020: Nicht aufgelöstes Token (0A00003B) "public: static int FolderContentClass::Progress" (?Progress@FolderContentClass@@$$Q2HA).
    1>Command and Conquer Profil Cracker.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" int __cdecl closedir(struct DIR *)" (?closedir@@$$J0YAHPAUDIR@@@Z)" in Funktion ""class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall FolderContent(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?FolderContent@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HV12@@Z)".
    1>Command and Conquer Profil Cracker.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" struct dirent * __cdecl readdir(struct DIR *)" (?readdir@@$$J0YAPAUdirent@@PAUDIR@@@Z)" in Funktion ""class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall FolderContent(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?FolderContent@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HV12@@Z)".
    1>Command and Conquer Profil Cracker.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" struct DIR * __cdecl opendir(char const *)" (?opendir@@$$J0YAPAUDIR@@PBD@Z)" in Funktion ""class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall FolderContent(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?FolderContent@@$$FYM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HV12@@Z)".
    1>Command and Conquer Profil Cracker.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: static int FolderContentClass::Progress" (?Progress@FolderContentClass@@$$Q2HA)".
    1>Command and Conquer Profil Cracker.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __clrcall FolderContentClass::FolderContent(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?FolderContent@FolderContentClass@@$$FSM?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HV23@@Z)" in Funktion ""private: void __clrcall CommandandConquerProfilCracker::Form1::button1_Click_1(class System::Object ^,class System::EventArgs ^)" (?button1_Click_1@Form1@CommandandConquerProfilCracker@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)".
    

    Und ich hab keine Ahnung wie sie Ausglößt werden.
    Was braucht ihr dazu um zu wissen woher es kommt ?



  • Hab einiges grad entziffern können:
    er macht aufstände bei der dirent.h
    VC++ kennt sie nicht ist aber bei ISO Dev Cpp dabei.
    Sie gibt mir Ordner und Dateien wieder.
    Dazu könnte ich ausweichmaterial gebrauchen.



  • Commando zurück alles immer noch nicht im Lot



  • Code?



  • ups ja:

    #include <cstdlib>
    #include <iostream>
    #include <string>
    #include <sstream>
    #include <stdio.h>
    #include "dirent.h"
    #include <fstream>
    
    using namespace std;
    
    string ListDF(int returnType, std::string DirToSearch);
    
    string ListDF(int returnType, std::string DirToSearch)
    {
        DIR *dirp;
    	string Directorys[1024];
    		int DC = 0;
    	string FilesAR[2048];
    		int FC = 0;
        string Dirs;
        string Files;
        string buffer;
        string dete;
        std::string Path;
        system("cls");
        struct dirent *entry;
    	string LOC = DirToSearch;
    	LOC += "Located";
    	std::ofstream Located;
    	Located.open(LOC.c_str());
    	if (!Located)
    	{
    		Located.close();
    		return "FAILED";
    	}
    	Located.close();
        if(dirp = opendir(DirToSearch.c_str()))
        {
            int a = 0;
            while (entry = readdir(dirp))
            {
                a++;
                int i = 0;
                dete += entry->d_name;
                std::ifstream Detect;
                Path = DirToSearch;
    			Path += "\\";
                Path += dete;
                Detect.open(Path.c_str());
                if (a > 2)
    			{
    				if (Detect)
    			    {
    			        Files += dete;
    			        Files += "\n";
    					FC++;
    					FilesAR[FC-1] = dete;
    			    }
    			    else
    			    {
    			        Dirs += dete;
    			        Dirs += "\n";
    					DC++;
    					Directorys[DC-1] = dete;
    			    }
    			}
                dete = "";
                Detect.close();
            }
    
            closedir(dirp);
        }
    	if (returnType == 0)
    	{
    	    std::ofstream Out;
    	    Out.open("Maplist.mpl");
    	    Out << Dirs;
    		Out.close();
    	}
    	if (returnType == 1)
    	{
    		return Files;
    	}
    	if (returnType == 2)
    	{
    		return Dirs;
    	}
    	if (returnType == 3)
    	{
    		string all;
    		all = "Dateien:\n";
    		if (Files != "")
    		{
    			all += Files;
    			if (Dirs != "")
    				all += "\nOrdner:"; 
    				all += "\n";
    		}
    		if (Dirs != "")
    			all += Dirs;
    		return all;
    	}
    	if (returnType == 4)
    	{
    		string Seperate = "Keine Dateien";
    		int Seperator = 0;
    		if (FC > Seperator)
    			Seperate = "";
    		while (Seperator < FC)
    		{
    			Seperator++;
    			Seperate += FilesAR[Seperator-1];
    			if (Seperator < FC)
    				Seperate += "||";
    		}
    		return Seperate;
    	}
    	if (returnType == 5)
    	{
    		string Seperate = "Keine Verzeichnisse";
    		int Seperator = 0;
    		if (DC > Seperator)
    			Seperate = "";
    		while (Seperator < DC)
    		{
    			Seperator++;
    			Seperate += Directorys[Seperator-1];
    			if (Seperator < DC)
    				Seperate += "||";
    		}
    		return Seperate;
    	}
    	return "FEHLER";
    }
    

    Im grunde hab ich das Problem, dass er die dirent.h nicht kennt, gibts ne VC++ Alternative, die ähnliches kann (sicher, ich kenne sie nur nicht)

    btw: wusste ich jetzt nicht wie man bei dirent.h unter Files und Directorys unterscheidet. Deshalb meine kleine Notlösung hier.

    ALSO: Alternative

    EDIT: UPS mom ich editiere

    EDIT 2: Code editiert von Console zu VC++ header.
    Ich hab jetzt so ziemliche Scheiße gebaut, da ich vorher dirent.h und die mingw.h zu den VC includes hinzugefügt hab, dann kannte er es zwar aber die Linkerfehler sind erschienen. Ich hab sie wieder entfernt aber die Fehler bleiben, aber da ich das jetzt eh nicht benutzen werden, da unbekannt (war).

    ALSO 2: ALternative

    EDIT 3: Linkerfehler weg, dirent.h unbekannt -> Programm neustart

    ALSO 3: wieder alles in Ursprungsform -> ALTERNATIVE 😃

    EDIT 4: habe eine VC++ dirent.h gefunden.
    Das mitgelieferte Projekt kompiliert aber meins nicht, siehe Linkerfehler.
    Ich verstehe nicht ???

    EDIT 5: Habs jetzt wenn ich es lokal include gehts wunderbar mit der neuen dirent.h. (REIM 😃 )

    EDIT 6: Ich editiere sie gerade auf die gewünschte Funktion. Das waren alles Notlösungen von einem anderen Programm, das das Consolenprogramm ausgeführt hat und die angaben gelesen, aber ich schreibs jetzt zur Funktion um.

    Verbesserungsvorschläge bitte, ich update es regelmäßig in den nächsten Tagen.

    EDIT 7: Merze noch ein Paar Fehler aus

    EDIT 8: er kennt d_namelen nicht mehr, nutze alternative -> Fehler -> suche weitere alternative zur länge... bitte warten

    EDIT 9: Schleife ausgebaut, durch neue dirent.h nicht mehr notwendig.

    EDIT 10: Erstmal bleibt es so habe den Code aktualisiert.

    EDIT 11: Code Aktualisiert


Anmelden zum Antworten