dwmapi.lib



  • Hallo,

    seit kurzem habe ich angefangen Programme mit der winapi zu schreiben und wollte nun auch gerne die dwmapi nutzen.
    Ich nutze dev-c++, in dem die dwmapi.h und dwmapi.lib nicht von Anfang an vorhanden sind.
    Die dwmapi.h aus dem Internet zu besorgen war nicht schwer, doch die dwmapi.lib steht nirgendswo zum Download bereit.

    Also habe ich einfach MS visual c++ express installiert und die dort vorhandene dwmapi.lib gelinkt. Doch dabei bekomme ich aber den Fehler:

    [Linker error] undefined reference to `_imp__DwmExtendFrameIntoClientArea@8'
    ld returned 1 exit status
    [Build Error] [output/bin/DTp.exe] Error 1

    bei der Syntax Überprüfung meldet er:

    [Warning] `nul.gcda' is not a gcov data file

    Wenn ich den Funktionsaufruf von

    DwmExtendFrameIntoClientArea()
    

    weglasse Kompiliert er ohne zu meckern, ich vermute daher das es an der lib Datei liegt.

    Die Frage ist jetzt, stimmt das und wenn ja wo bekomme ich eine neue dwmapi.lib her oder ist es in echt ein total bescheuerter Fehler, den ich gemacht habe?

    Danke schon mal im Voraus

    Justin



  • Allererstens würde ich von Dev-C++ auf jeden Fall abraten (hoffnungslos veraltet) und dir sehr empfehlen Visual Studio zu benutzen. Zweitens hast du dwmapi.lib nicht gelinkt wenn der Fehler kommt, so einfach is das 😉
    Ich weiß nicht ob ein aktueller MinGW was mit MSVC .lib Files anfangen kann, aber selbst wenn hast du vermutlich eine dermaßen alte Version von MinGW dass das wohl nicht geht...



  • Also ich habe da stehen:

    #include <windows.h>
        #include <windowsx.h>
        #include <dwmapi.h>
            #pragma comment(lib,"dwmapi.lib")
    

    und ich habs auch schon versucht indem ich unter Projekt - Projekt Optionen ... - Parameter - Linker den Pfad zur .lib eingebe.
    Mitanderen worten ich habe sie gelinkt und trotzdem kommt ein fehler.

    Wieso würdest du denn genau von Dev-C++ abraten? Nur weil es alt ist? Der Standard ist doch der selbe geblieben.



  • Just95 schrieb:

    Wieso würdest du denn genau von Dev-C++ abraten? Nur weil es alt ist? Der stan**** ist doch der selbe geblieben.

    Weil es total veraltet ist und schon als es noch nicht veraltet war bei weitem nicht besonders gut war. Visual Studio ist genauso frei verfügbar, aktuell und in jeder Hinsicht besser. Und der Visual C++ Compiler ist nunmal der "native" C++ Compiler für Windows und sämtliche offiziellen SDKs sind auf ihn ausgelegt.
    Und nur weil sich am Standard inzwischen (noch) nix geändert hat heißt das noch lange nicht dass sich in den letzten 5 Jahren an den Compilern nix geändert hat.

    Ich wäre mir nicht so sicher dass der MinGW #pragma comment versteht da das ein Microsoft-spezifisches pragma ist, ganz zu schweigen ob er mit .lib Dateien die für MSVC gedacht sind was anfangen kann. Aber was auch immer du gemacht hast (soweit ich weiß reicht es nicht einfach den Pfad zur lib in der Commandline zu adden), wenn du wirklich die lib gelinkt hättest dann käme der Fehler nicht 😉



  • #pragma comment(lib,"dwmapi.lib")

    Ist MS Spezifisch. Füge die Lib den Linker Settings hinzu.



  • Ich weiß nicht ob ein aktueller MinGW was mit MSVC .lib Files anfangen kann, aber selbst wenn hast du vermutlich eine dermaßen alte Version von MinGW dass das wohl nicht geht...

    Achso... das könnte natürlich sein.

    Allererstens würde ich [...] dir sehr empfehlen Visual Studio zu benutzen.

    Werd ich mal versuchen und hoffen, dass das Problem löst.

    Vielen dank erst mal.

    Justin



  • Noch mal vielen dank, ich habs mit visual c++ ausprobiert und es klapt.


Anmelden zum Antworten