Linker Problem bei Windows API

Rene42

Erfahrenes Mitglied
Hi Leute,

ich beschäftige mich im Mom mit der Fenstergenerierung unter Windows. Ich benutze Dev Cpp mit dem beifgefügten API.

Ich verwende folgenden Quellcode:
Code:
#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

const char szAppName[]="Ein eigenes Fenster";


LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
 switch (message)
 {
  case WM_DESTROY:
  {
   PostQuitMessage(0);
   return 0;
  }
 }
 return DefWindowProc(hWnd, message, wParam, lParam);
}; 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                   PSTR szCmdLine, int iCmdShow)
{
 //Variabeln deklarieren
 HWND       hWnd;
 MSG        msg;
 WNDCLASS   wc;

 wc.style         =  CS_HREDRAW | CS_VREDRAW;
 wc.lpfnWndProc   =  WndProc;
 
 wc.cbClsExtra    =  0;
 wc.cbWndExtra    =  0;

 wc.hInstance     =  hInstance;
 wc.hCursor       =  LoadCursor(NULL,IDC_ARROW);
 wc.hIcon         =  LoadIcon(NULL,IDI_APPLICATION);
 wc.hbrBackground =  (HBRUSH)GetStockObject(WHITE_BRUSH);                    
 
 wc.lpszClassName =  szAppName;
 wc.lpszMenuName  =  NULL;
 
 hWnd = CreateWindow(szAppName,
                       "Titelleiste",
                       WS_OVERLAPPEDWINDOW,
                       CW_USEDEFAULT,          /* X-Position auf dem Monitor */
                       CW_USEDEFAULT,          /* Y-Position auf dem Monitor */
                       CW_USEDEFAULT,          /* Fensterbreite              */
                       CW_USEDEFAULT,          /* Fensterhoehe               */
                       NULL,
                       NULL,
                       hInstance,
                       NULL);
 ShowWindow(hWnd, iCmdShow);
 UpdateWindow(hWnd);                      
 
  while (GetMessage(&msg, NULL, 0, 0))
   {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
   }
   return msg.wParam;
}

Leider verursacht dies beim Linker den Fehler:

[Linker error] undefined reference to `GetStockObject@4'
ld returned 1 exit status

Damit kann ich rein garnichts anfangen...hoffe jemand kennt meinen Fehler.

Rene
 
Also ich hab nun folgendes gemacht:

- mich verischert das die lib Gdi32.lib im Ordner DevCpp\lib vorhanden

- dann habe ich unter Projektoptionen -> Verzeichnisse - BibVerzeichnisse den Pfad
hinzugefügt

Leider meldet Dev nun beim kompilieren immer noch:
[Linker error] undefined reference to `GetStockObject@4' :confused:

@engelmaus: Ich hatte von Anfang nach lib gesucht, dll war nur ein Schreibfehler im Forum.

René

PS: Ich habe nun nocheinmal gegoogelt und festgestellt, dass man die Lib noch unter Optionen->Parameter adden kann.
Nun hae ich eine neue Fehlermeldung: File format not recognized

Hat jemand einen Verdacht, was ich falsch mache?
 
Zuletzt bearbeitet:
Also ich hab nun folgendes gemacht:

- mich verischert das die lib Gdi32.lib im Ordner DevCpp\lib vorhanden

- dann habe ich unter Projektoptionen -> Verzeichnisse - BibVerzeichnisse den Pfad
hinzugefügt
Niemand hat dir gesagt, das du irgendeinen Pfad hinzufügen sollst. Das DevCpp\lib Verzeichnis ist als Systemverzeichnis standardmäßig bereits im Bibliothekensuchpfad enthalten. Es ist also nicht verwunderlich, wenn sich an dem Fehler nichts ändert.

Gib mal in den Optionen für den Linker die Bibliothek mit dem -l Kommandoschalter an. (siehe Screenshot)

Gruß
 

Anhänge

  • gdi32.png
    gdi32.png
    6,2 KB · Aufrufe: 101
Zurück