Announcement

Collapse
No announcement yet.

Undifined symbol "_main" in Modul "WinMain"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Undifined symbol "_main" in Modul "WinMain"

    Hallo!

    Ich habe schon einige Erfahrung mit C++, bin aber blutiger Anfänger in Windows-Programmierung. Ich habe versucht, ein Programm zu compelieren, das eine einfache MessageBox auf den Bildschirm ausgibt. Das Compilieren ging problemlos, aber der Linker schickt mir die oben genannte Fehlermeldung.
    Meine Frage ist: wie kommt das Symbol "_main" in die Objektdatei, wenn es gar nicht im Quellcode steht? Ich benutze Borland-Builder 5.02 und Borland C++ 3.1 (ich weiß, ist ein bißchen alt, finde ich aber übersichtlicher). Müglicher weise ist eine Compilereinstellung falsch.
    Wer kann mir weiterhelfen?

  • #2
    a) heisst es comp<b>i</b>lieren

    b) Borland Builder 5.02 ??? nicht eher Borland C++ 5.02 (ohne Builder)

    c) wie machst du dass, Version 5.02 und 3.1 gleichzeitig zu nutzen

    d) poste doch mal Cod
    Christian

    Comment


    • #3
      a)Richtig, war ein Schreibfehler.

      b) Beim Installieren stand da: Borland Builder 5.02, bilde ich mir ein, kann mich aber auch irren. Bei der 5.02 bin ich mir aber sicher.

      c) ich benutze doch nicht beide gleichzeitig, habe nur zwei verschiedene Computer.

      d) Hier der Code:
      <PRE>
      #include <windows.h>
      const char szWitz[] = "\"Ich steh' schwer auf Umweltschutz\", sagt Peter.\n"
      "\"Ich werfe zum Beispiel alte U-Bahn-Fahrscheine nie weg,\n"
      "sondern benutze sie mehrmals.\"";
      int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
      PSTR szCmdLine, int iCmdShow)
      {
      int iAntwort = MessageBox(NULL, szWitz, "Ha, ha, ha, ha...",
      MB_ICONINFORMATION | MB_OKCANCEL | MB_DEFBUTTON1);
      if (IDOK == iAntwort)
      {
      MessageBox(NULL, "Ja, ich finde den Witz auch Ok...",
      "Sie haben auf Ok gedrückt",
      MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1);
      }
      else if (IDCANCEL == iAntwort)
      {
      MessageBox(NULL, "Ja, warum haben sie denn auf Abbrechen gedrückt?\n"
      "Hat ihnen der Witz etwa nicht gefallen?",
      "Sie haben auf Abbrechen gedrückt",
      MB_ICONINFORMATION | MB_OK | MB_DEFBUTTON1);
      }
      return 0;
      }
      </PRE>
      Ist übrigens auch zu finden unter:
      http://www.win-api.de/tut01.htm

      Comment


      • #4
        Achherje, dass ist lange her. Ich habe zwar die Version 5.02 hier noch stehen, aber schon lange nicht mehr auf dem Rechner.

        Wenn du die komplette Version hast (Borland bietet die Version 5.02 zum download an, aber nur den Compiler ohne IDE), dann hast du das Programm wohl mit dem Editor (glaube bcw.exe) erstellt. Dann sollte eigentlich alles automatisch laufen.

        Wenn du die Kommandozeilen Version hast, dann sind jedenfalls die richtigen Parameter vorzugeben (die ich nicht weiss).

        Tut mir leid vielleicht hat ein anderer mehr Ahnung
        Christian

        Comment


        • #5
          Im Projektfenster mit der rechten Maustaste auf dem Eintrag der Exe-Datei, TargetExpert aufrufen, Umgebung WIN32, Zielmodell GUI einstellen, neu kompilieren..
          Günther

          Comment


          • #6
            Danke, Günther, genau dat wor de Knackpunkt!!!
            Na, denn mol rann an'n Speck!
            Heißen Dank Nochmals,
            Andrea

            Comment


            • #7
              Hi Andreas,

              ich habe die selbe Fehlermeldung beim Borland C++ 5.02 und BC55.

              eine Frage? Welche Windows Version hast du ? funktioniert es auch beim Win ME

              Comment


              • #8
                Ich habe zuhause Win98, am Arbeitsplatz aber XP. Inzwischen bin ich auf Borland C-Builder 5.02 umgestiegen, weil ich das Problem bei der alten IDE einfach nicht in den Griff bekommen habe. 5.02 funzt auf 98 und XP problemlos, ist aber zum Kennenlernen recht komplex und kompliziert, und die Hilfe ist ..ohne Worte. (Ich benutze immer noch die Hilfe vom alten 3.1, ist viel übersichtlicher). Auf ME sollte es eigentlich auch funktionieren.

                Zum Problem: Ich erstelle den Quellcode als Text
                (Menü Datei-Neu-Textdatei). Als Projekt oder mit AppExpert gibt es nur Chaos. Wenn der Quellcode fertig ist, rufe ich den Target-Expert auf (im Quellcode-Fenster mit der Rechten Maustaste klicken, dann im Popup-Menü der 2. Punkt). Hier kannst Du verschiedene Einstellungen vornehmen, unter anderem "Umgebung" (muß auf Win32 stehen), Zieltyp (natürlich EXE)und Zielmodell (steht leider normalerweise auf KONSOLE, muß auf GUI umgestellt werden). Das wars.
                Was man beim BC55 tun muß, weiß ich leider nicht.
                Habe übrigens gesehen, daß Du noch eine andere Fehlermeldung bekommst. Die hat u. U. in der IDE die gleiche Ursache.

                Comment


                • #9
                  Nochmal, es gibt keinen Borland C++ Builder 5.02. Es gab nur ein Borland C++ 5.02 mit der OWL-Klassenbibliothek.

                  Dann gibt es die Borland C++ Builder Serie, mit der VCL als Klassenbibliothek.

                  Der BC55 ist nur ein Compiler, ohne IDE oder so etwas. Dort müssen alle Parameter, die man sonst in der IDE einstellen kann per Kommandozeielenparamater übergeben werden. Die Parameter weiß ich auch nicht, aber die sollten eigentlich irgendwo in einer ReadMe zum BC55 stehen.

                  Grüße Joche

                  Comment


                  • #10
                    Irrtum, der Borland 5.02 enthält auch die MFC, der Nachfolgerin der VC

                    Comment


                    • #11
                      MFC = Microsoft Foundation Classes. Diese ist das alte Framework von MS, hat mir Borland nix zu tun und ist schon gar nicht der Nachfolger der VCL. Dieses ist bei den Borland IDEs nur aus Kompatibilitätsgründen enthalten..

                      Comment


                      • #12
                        MFC ist kein Nachfolger der VCL sondern ein Konkurenzprodukt. Und beides ist NICHT in Borland C++ 5.02 enthalten. (aber im C++ Builder 5.0)
                        Günther

                        Comment


                        • #13
                          Ok, MFC ist nicht der Nachfolger der VCL, da habe ich mich geirrt. Aber der Borland C++ 5.02 enthält die MFC. Es sei denn, mein Computer zeigt mir da etwas falsches an (glaube ich aber nicht).

                          Es ist eigenartig: Alle behaupten, daß es keinen Borland C-Builder 5.02 gibt. Ich bin mir aber sicher, daß ich das "5.02" beim installieren gesehen habe, und daß mein Paket die MFC enthält. Wat denn nu?

                          Comment


                          • #14
                            Der Borland C++ 5.02 hat MFC-Unterstützung (hab grad die Schachtel aud den Untiefen meines Softwareschranks gekramt...)

                            Start doch einfach mal die IDE und schau unter Hilfe -> Info nach, was du hast.

                            Grüße Joche

                            Comment


                            • #15
                              Und nocheinmal:

                              es gibt keinen Borland C++ Builder 5.02. Es gab nur ein Borland C++ 5.02 .

                              Und es gibt die C++Builder Serie, von der es auch eine Version 5 gab. 6 ist die Aktuelle. Die MFC war bisher in allen Produkten mit dabei, falls es Leute gibt die trotz VCL mit der MFC programmieren wollen.

                              MFC und VCL sind Klassenlib's.

                              Siehe auch:http://www.marquardtnet.info/cecke/tutorials.8/8_vcl.htm
                              Christian

                              Comment

                              Working...
                              X