undefinied reference to winmain@16



  • Hi Leutz habe mal ne frage was hat diese fehlermeldung zu bedeuten sie kommt immer wenn ich folgendes progi in dev compilieren möchte.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define FOREVER 1
    #define TRUE    1
    #define FALSE   0
    #define LCOUNT 20
    template <class C> 
    
    int quicksort (C& a, int l, int r, int q)
    {
    	swap(a[q],a[r]);
    	q=r;      // Pivot ist jetzt ganz rechts
    	int i=l-1, j=r; 
    
    	while (i<j)
    	{
    		i=i+1; while (i<j && a[i]<=a[q]) i=i+1;
    		j=j-1; while (i<j && a[j]>=a[q]) j=j-1;
    		if (i<j)
    			swap(a[i],a[j]);
    		else
    			swap(a[i],a[q]);
    	}
    	return i; // endgueltige Position des Pivot
    }
    
    template <class C> 
    void qs_rec (C& a, int l, int r)
    {
    	if (l<r)
    	{ 
    		int i=qs_partition(a,l,r,r);
    		qs_rec(a,l,i-1);
    		qs_rec(a,i+1,r);
    	}
    }
    
    template <class C> 
    void quicksort (C& a)
    {
    	qs_rec(a,0,a.size()-1);
    }
    


  • Hallo,

    ganz einfach: es gibt kein Programm ohne main (bzw. ihre betriebssystem/plattform-spezifischen Äquivalente) 🙂

    MfG



  • Falls du schon eine WinMain Funktion hast, musst du Dev-Cpp noch die Compiler-Option "-mwindows" übergeben.

    mfg



  • Woher soll denn der Compiler wissen, wo das Programm anfangen soll?

    Wenn du eigentlich vor hattest einen Bibliothek daraus zu machen, dann musst du den Projekttyp umstellen von ausführbaren Programmen (EXE) auf Bibliotheken (LIB), wenn das beim DEV überhaupt möglich ist. 😕



  • also einfach ein int main vor die schleife oder wie ? sorry jungs bin noch ein absoluter nobb in diesem gebiet.



  • Bei einem Programm brauchst du immer die eine main()-Funktion. Da ist der Einstiegspunkt ins Programm. Wie schon gesagt, woher soll sonst der Compiler wissen, wo er anfangen soll? In dieser main() kannst du dann andere Funktionen aufrufen (z. B. quicksort() in deinem Fall).

    Du wirst übrigens Fehlermeldungen bekommen, da du die Funktion quicksort() zweimal definierst. Da brauchst du unterschiedliche Namen, ansonsten wirst du auf C++ und Klassen ausweichen müssen.

    Was ist eigentlich template <class C> ? (gehört wohl auch eher zu C++ ;))



  • ich bekomms einfach nicht gebacken nun habe ich eine main funktion gesetzt und er knallt immernoch fehlermeldungen wie noch und nöcher 👎 👎 👎



  • Vllt. weil du eine win32 Anwendung erstellt hast, statt einer Konsolenanwendung,
    solch einen Fehler habe ich in diesem Zusammenhang in Erinnerung.



  • Ok, wie kann ich es also in eine konsolenanwendung herstellen, wa sich brauche ist einfach ein quicksort der mir die zahlen die ich eingebe schön sortiert. der ungefähr so ablaufen soll sitze jetzt schon seit 1 woche dran und bin einfah am verzweifeln:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    //      ********* Equates **********
    
    #define FOREVER 1
    #define TRUE    1
    #define FALSE   0
    
    #define LCOUNT 20
    
    /******** globals ********/
    int Recursion=0;
    int num;	//Anzahl zu sortierender Elemente
    int	pivot;	//Index Pivot Element
    
    #include "info1h1_a.c"
    		/*********** in dieser include Datei stehen:
             - die Unterprogramme Ihrer Lösung,
             - globale Variablen
             - zusätzliche #defines
    		 - ggfs. weitere #include's
    
    		 **************/
    int main(int argc,char **argv) {
    	int i;
    	int sortiermich[LCOUNT];
    
    	num = argc - 1;
    	if (num < LCOUNT) {
    		for( i=0; i < num; i++ )	sortiermich[i] = atoi(argv[i+1]);
    		QuickSort( sortiermich,0,num-1); //sortiere und gibt bei jeder Vertauschung die vertauschten Elemete und das Pivotelement aus.
     	   return 0;
    	}
    	else {
    		printf("Zuviele Parameter (%d statt %d)\n",num,LCOUNT);
    		return 1;
    	}
    }
    


  • Am einfachen wärs, wenn du uns mal die Fehlermeldungen und den Code bzw. die Codestellen posten könntest.



  • Wiegesagt wir sollen ein quicksort machen, der 1. quelltext was ich und ein freudd hinbekommen haben unten der zweite ist die aufgabenstellung zu dem quicksortp Programm. Ich bin echt am verzweifeln wiegesagt am Anfang kam immer nur die Fehlermeldung (siehe Topicüberschrift). Habe wie vorgeschlagen dann ein main vor die schleife gesetzt und jetzt habe ich richitg viele fehlermeldungen wie zb:11 G:\Downloads\Sonstiges\quicksortelfin.cpp
    quicksort' was not declared in ; **-15 G:\\Downloads\\Sonstiges\\quicksortelfin.cpp** **ISO C++ forbids declaration of
    [b];15 G:\Downloads\Sonstiges\quicksortelfin.cppsyntax error before int'[/b] **[b]18 G:\\Downloads\\Sonstiges\\quicksortelfin.cpp ISO C++ forbids declaration ofq
    18 G:\Downloads\Sonstiges\quicksortelfin.cpp
    r' was not declared in this 19 G:\\Downloads\\Sonstiges\\quicksortelfin.cppl' was not declared in this
    19 G:\Downloads\Sonstiges\quicksortelfin.cpp
    r' was not declared in this 21 G:\\Downloads\\Sonstiges\\quicksortelfin.cpp parse error beforewhile'
    24 G:\Downloads\Sonstiges\quicksortelfin.cpp
    ISO C++ forbids declaration of j 24 G:\\Downloads\\Sonstiges\\quicksortelfin.cpp redefinition ofint j'
    19 G:\Downloads\Sonstiges\quicksortelfin.cpp
    int j' previously defined here 24 G:\\Downloads\\Sonstiges\\quicksortelfin.cpp parse error beforewhile'[/b]

    MfG

    Rainer 2k



  • Ups sorry sehe gerade das das c++, kann ich das auch in c machen.
    Das programm solte aussehen ich gebe zahlen ein : 50 10 6 3
    Un das Prog soll mir die sortieren habe vorher noch nie quicksort gemacht deswegen sind wir hier am ausrasten und probieren alles was wir von und c++ wissen.

    danke im voraus

    rainer 2k



  • Also wenn du den quicksort auslagern möchtest in einer anderen Datei, dann mach das am besten so:

    quicksort.h

    #ifndef QUICKSORT_H
    #define QUICKSORT_H
    
    int quicksort(...); //anstatt ... hald die Parameter, die du brauchst
    
    #endif
    

    quicksort.c

    int quicksort(...) //wie in Headerdatei
    {
       ... //hier die Funktion ausprogrammieren
    }
    

    programm.c

    #include <stdio.h>
    #include <stdlib.h>
    ...
    
    #include "quicksort.h" //sollte im gleichen Verzeichnis sein, ansonsten Pfad angeben!
    
    int main(void)
    {
       ...
    
       quicksort(...); //Aufruf deiner Funktion quicksort
    
       ...
    }
    

    Die quicksort.c musst du dann natürlich noch deinen Projektdateien hinzufügen, damit das auch compiliert und gelinkt wird.



  • ok, ich danke dir werde das morgen mal probieren und dann statusmeldung abgeben 😋 😋 😋

    MfG
    Rainer2k


Anmelden zum Antworten