mikrocontroller.net

Forum: PC-Programmierung MinGW Linkerfehler??


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.

Ich programmiere schon recht lange mit c/c++, aber nur Kommandozeile. 
Nun bin ich gerade dabei mit MinGW mein erstes Windows programm zu 
erstellen.

Der Programmcode sieht so aus.

#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPreInstance, PSTR szCmdLine, int iCmdShow)
{

  
  static TCHAR szAppName[] = TEXT ("hallo");
  HWND    hwnd;
  MSG     msg;
  WNDCLASS   wndclass;
  
  wndclass.style      = CS_HREDRAW | CS_VREDRAW ;
  wndclass.lpfnWndProc  = WndProc;
  wndclass.cbClsExtra    = 0;
  wndclass.cbWndExtra    = 0;
  wndclass.hInstance    = hInstance;
  wndclass.hIcon      = LoadIcon (NULL, IDI_APPLICATION);    // lädt ein Icon für das Programm
  wndclass.hCursor    = LoadCursor (NULL, IDC_ARROW );    // lädt einen MausCursor für das Programm
  wndclass.hbrBackground  = (HBRUSH) GetStockObject (WHITE_BRUSH);
  wndclass.lpszMenuName  = NULL;
  wndclass.lpszClassName = szAppName;
  
  hwnd = CreateWindow (
            szAppName,
            TEXT ("Das"),
            WS_OVERLAPPEDWINDOW,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            NULL,
            NULL,
            hInstance,
            NULL
            );
            
  ShowWindow (hwnd, iCmdShow);
  UpdateWindow (hwnd);
  
  while (GetMessage (&msg, NULL, 0 , 0))
  {
    TranslateMessage( &msg);
    DispatchMessage (&msg);
  }
  
  return msg.wParam;
            
}
  
  
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{

  HDC hdc;
  PAINTSTRUCT ps;
  RECT  rect;
  
  switch(message)
  {
  
  }
  

  return DefWindowProc ( hwnd, message, wParam, lParam);

}


OK. Das Programm macht nicht viel...

Bei compilieren bekomme ich folgenden Fehler:

C:\ccode\00002_createFenster>g++ messagebox.c -o messagebox
C:\DOCUME~1\Schepper\LOCALS~1\Temp/cc87wcu8.o:messagebox.c:(.text+0x67): 
undefin
ed reference to `GetStockObject@4'
collect2: ld returned 1 exit status

Im Internet habe ich schon gesucht. Hier schreiben die, dass wäre ein 
Linker fehler wegen irgendeiner LIB...


Was muss ich konkret eingeben, dass es compiliert werden 
kann??????????????

Sonst habe ich immer mit MS Prdukte gearbeitet...

Vielen Dank für eure Unterstützung.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> C:\ccode\00002_createFenster>g++ messagebox.c -o messagebox
> C:\DOCUME~1\Schepper\LOCALS~1\Temp/cc87wcu8.o:messagebox.c:(.text+0x67):
> undefin
> ed reference to `GetStockObject@4'
> collect2: ld returned 1 exit status
>
> Was muss ich konkret eingeben, dass es compiliert werden
> kann?

Mit gcc für C-Projekte statt mit g++ (für C++-Projekte) arbeiten.

Autor: Mario Grafe (mario)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für Oberflächen würde ich die FLTK library nehmen, da spart man sich ne 
Menge Ärger und ist supereinfach zu bedienen: www.fltk.org

Ein Tip: Lehn dich zurück und schau die Tutorials an: 
http://seriss.com/people/erco/fltk-videos/

Gruß
Mario

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan B. schrieb:

> Mit gcc für C-Projekte statt mit g++ (für C++-Projekte) arbeiten.

Und:

SuperKoko schrieb am August 23rd, 2006, 03:43 PM:
> GetStockObject is defined in libgdi32.a so you should add -lgdi32
http://www.codeguru.com/forum/archive/index.php/t-...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.