Связывание dwmapi в Windows с помощью mingw - PullRequest
0 голосов
/ 06 июля 2018

Статья, помеченная как дубликат, не помогает, поскольку в ней рассматриваются общие проблемы компоновщика, но не эта конкретная.

Я пытаюсь портировать небольшую программу на C ++Я написал для Linux, используя Boost, SQLite и GTK + 3 для Windows.Код компилируется просто отлично, но я столкнулся с проблемой компоновки, которую я не могу решить.Я относительно новичок в мире C ++, так что, надеюсь, проблему довольно легко решить.Я искал в Интернете последние 2 дня и не нашел ничего, что могло бы помочь, поэтому сейчас я спрашиваю здесь.

В Linux я использую g ++, и поэтому я настроил mingw с msys2на Windows 10. Я установил необходимые библиотеки, используя pacman в 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

, и команда, которую я использую для связи:

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 [...]

У него нет проблем с подключением libsqlite3, libboost_system-mt и libboost_filesystem-mt, но я по-прежнему получаю следующую ошибку:

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

Я попытался включить путь C: \ Windows \ SysWOW64, где dwmapi.dll расположен так:

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

, но это приводит только к большему количеству ошибок:

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'

плюс ошибки «неопределенная ссылка» для GTK +, Boost и SQLite.

Я немного растерялся из-закак решить это.Я работал над этим в течение последних 2 дней и не добился никакого прогресса ... У кого-нибудь есть идеи?Учитывая отсутствие информации об этом в интернете, я предполагаю, что это либо проблема новичка, либо редкость.

Заранее спасибо!

Проект находится на Github: https://github.com/eiskalteschatten/developersnotebook

...