c ++ - Linking dwmapi på Windows med Mingw

Indlæg af Hanne Mølgaard Plasc

Problem



Artiklen dette blev markeret som et duplikat hjælper ikke, da det omhandler generelle linkerproblemer, men ikke denne specifikke.


Jeg forsøger at porte et lille C ++ program, jeg skrev til Linux ved hjælp af Boost, SQLite og GTK + 3 til Windows. Koden kompilerer fint, men støder på et sammenkædende problem, som jeg ikke kan synes at løse. Jeg er relativt ny til C + + verdenen, så forhåbentlig er problemet ret nemt at rette. Jeg har søgt på internettet for de sidste 2 dage og fristed har ikke fundet noget, der hjælper, så jeg spørger her nu.


På Linux bruger jeg g ++ og så har jeg installeret mingw med msys2 på Windows 10. Jeg har installeret de nødvendige biblioteker ved hjælp af pacman i msys2:


pacman -S base-devel mingw-w64-x86\_64-gcc-libs mingw-w64-x86\_64-gtk3 mingw-w64-x86\_64-pkg-config mingw-w64-x86\_64-sqlite3 mingw-w64-x86\_64-boost


og kommandoen jeg bruger til at forbinde er:


g++ 
    -Wall -g -std=c++11 -no-pie 
    -o bin/developersnotebook.exe 
    -lsqlite3 -lboost\_system-mt -lboost\_filesystem-mt 
    `pkg-config --libs gtk+-3.0` 
    build/components/Modal.o build/db/SqliteConnectionManager.o [...]


Det har ikke noget problem at forbinde libsqlite3, libboost\_system-mt og libboost\_filesystem-mt, men jeg får stadig følgende fejl:


c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -ldwmapi


Jeg har forsøgt at inkludere stien C: \ Windows \ SysWOW64 hvor dwmapi.dll er placeret som denne:


g++ 
    -Wall -g -std=c++11 -no-pie 
    -o bin/developersnotebook.exe 
    -lsqlite3 -lboost\_system-mt -lboost\_filesystem-mt -L"C:WindowsSysWOW64" 
    `pkg-config --libs gtk+-3.0` 
    build/components/Modal.o build/db/SqliteConnectionManager.o [...]


men det giver kun flere fejl:


Warning: resolving \_SetUnhandledExceptionFilter@4 by linking to \_SetUnhandledExceptionFilter
Use --enable-stdcall-fixup to disable these warnings
Use --disable-stdcall-fixup to disable these fixups
Warning: resolving \_ExitProcess@4 by linking to \_ExitProcess
Warning: resolving \_GetModuleHandleA@4 by linking to \_GetModuleHandleA
Warning: resolving \_GetProcAddress@8 by linking to \_GetProcAddress
Warning: resolving \_FreeLibrary@4 by linking to \_FreeLibrary
Warning: resolving \_GetCommandLineA@0 by linking to \_GetCommandLineA
Warning: resolving \_EnterCriticalSection@4 by linking to \_EnterCriticalSection
Warning: resolving \_TlsGetValue@4 by linking to \_TlsGetValue
Warning: resolving \_GetLastError@0 by linking to \_GetLastError
Warning: resolving \_LeaveCriticalSection@4 by linking to \_LeaveCriticalSection
Warning: resolving \_DeleteCriticalSection@4 by linking to \_DeleteCriticalSection
Warning: resolving \_VirtualQuery@12 by linking to \_VirtualQuery
Warning: resolving \_VirtualProtect@16 by linking to \_VirtualProtect
Warning: resolving \_FindFirstFileA@8 by linking to \_FindFirstFileA
Warning: resolving \_FindNextFileA@8 by linking to \_FindNextFileA
Warning: resolving \_FindClose@4 by linking to \_FindClose
Warning: resolving \_IsDBCSLeadByteEx@8 by linking to \_IsDBCSLeadByteEx
Warning: resolving \_MultiByteToWideChar@24 by linking to \_MultiByteToWideChar
Warning: resolving \_WideCharToMultiByte@32 by linking to \_WideCharToMultiByte
Warning: resolving \_Sleep@4 by linking to \_Sleep
Warning: resolving \_InterlockedExchange@8 by linking to \_InterlockedExchange
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/crtbegin.o:cygming-crtbegin.c:(.text+0x29): undefined reference to `LoadLibraryA@4'


plus 'undefined reference' fejl til GTK +, Boost og SQLite.


Jeg er lidt tabt, hvordan man løser dette. Jeg har arbejdet på det i de sidste 2 dage og har slet ikke gjort nogen fremskridt ... Har nogen nogen ide? I betragtning af manglen på information om det på internettet antager jeg, at det enten er et noob problem eller er sjældent .


Tak på forhånd!


Projektet er på Github: https://github.com/eiskalteschatten/developersnotebook[6]

Bedste reference