Ошибки по данной тематике

-------------- LIBCMT --------------

LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library

-------------- Process crashed ----------------

Возникает уже только при объявлении например QSslSocket *socket = new QSslSocket(); или QNetworkRequest request; . Сборка при этом происходит нормально!?...

 ModLoad: 761b0000 76290000   C:\WINDOWS\SysWOW64\KERNEL32.DLL
 ModLoad: 75a80000 75c7c000   C:\WINDOWS\SysWOW64\KERNELBASE.dll
 ModLoad: 75990000 759ee000   C:\WINDOWS\SysWOW64\WS2_32.dll
 ModLoad: 75ca0000 75d5b000   C:\WINDOWS\SysWOW64\RPCRT4.dll
 ModLoad: 75390000 753b0000   C:\WINDOWS\SysWOW64\SspiCli.dll
 ModLoad: 75380000 7538a000   C:\WINDOWS\SysWOW64\CRYPTBASE.dll
 ModLoad: 756a0000 756ff000   C:\WINDOWS\SysWOW64\bcryptPrimitives.dll
 ModLoad: 77a10000 77a86000   C:\WINDOWS\SysWOW64\sechost.dll
 ModLoad: 753b0000 75547000   C:\WINDOWS\SysWOW64\USER32.dll
 ModLoad: 77ab0000 77ac7000   C:\WINDOWS\SysWOW64\win32u.dll
 ModLoad: 77860000 77881000   C:\WINDOWS\SysWOW64\GDI32.dll
 ModLoad: 76980000 76ada000   C:\WINDOWS\SysWOW64\gdi32full.dll
 ModLoad: 77560000 775dc000   C:\WINDOWS\SysWOW64\msvcp_win.dll
 ModLoad: 77890000 779af000   C:\WINDOWS\SysWOW64\ucrtbase.dll
 ModLoad: 755a0000 75697000   C:\WINDOWS\SysWOW64\ole32.dll
 ModLoad: 775e0000 77856000   C:\WINDOWS\SysWOW64\combase.dll
 ModLoad: 757e0000 75859000   C:\WINDOWS\SysWOW64\advapi32.dll
 ModLoad: 76ae0000 76b9f000   C:\WINDOWS\SysWOW64\msvcrt.dll
Process crashed
CDB crashed

Тут смысл был таков: openssl библиотеки собирались отдельно как динамические (с ключом MD), а подключались как статические (с проект с MT ключом компиляции). Подсказка была в map файле.


---------------- unresolved external symbol __imp__DeleteDC@44 ----------------------

libeay32.lib(rand_win.obj) : error LNK2001: unresolved external symbol __imp__DeleteDC@4

Ищем что это за функция DeleteDC . На сайте microsoft находим заголовочный файл wingdi.h, где прописана эта функция.

И тут доходит , что хотя наш проект Qt и не использует GUI , но использует openssl (libeay32.lib) , то в файле *.pro :
просто забыли убрать QT -= gui .

--------- unresolved external symbol __imp__CertFreeCertificateContext@4 ----------


libeay32.lib(e_capi.obj) : error LNK2001: unresolved external symbol __imp__CertFreeCertificateContext@4
libeay32.lib(e_capi.obj) : error LNK2001: unresolved external symbol __imp__CertGetCertificateContextProperty@16
libeay32.lib(e_capi.obj) : error LNK2001: unresolved external symbol __imp__CertOpenStore@20

Ищем что это за функция CertFreeCertificateContext . На сайте microsoft находим заголовочный файл wincrypt.h.

Лечится директивой #pragma comment (lib, "crypt32") .

Потом в файле map мы конечно видим ,что CertFreeCertificateContext находится в CRYPT32.dll :
__imp__CertFreeCertificateContext@4 0059904c crypt32:CRYPT32.dll
Но когда ошибки возникают map файл еще и в помине не существует...

Кстати Crypt32.lib присутствует у нас на ПК в каталогах :
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x86
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib
и скорее всего от зависимости CRYPT32.dll можно попробовать уйти , стобрав ее статически, но надо проверять...

Примечание: когда видим префикс __imp__ это значит , что мы имеем функцию, которпя должна находится во внешних (дигамтческих) библиотеках dll.