неопределенная ссылка на `_imp__CryptUnprotectData @ 28 ‘с Crypt32.Lib & amp; wincrypt.h включен

У меня проблема с одним из моих проектов.
Я использую QtCreator с MinGW и Qt 5.4.0

Когда я пытаюсь скомпилировать, эта простая строка вызывает у меня несколько ошибок:

CryptUnprotectData(data.password, NULL, NULL, NULL, NULL, (DWORD) 0, data.uncryptedPassword);

(с DATA_BLOB * data.password и DATA_BLOB * data.uncryptedPassword)

Получает меня :

undefined reference to `_imp__CryptUnprotectData@28'

Как сказано в заголовке, я включил файл Crypt32.Lib в свой .pro:

QT       += core gui
QT       += sql

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = ChromePass

LIBS += -L$$PWD/ -lCrypt32

TEMPLATE = appSOURCES += main.cpp\
mainwindow.cpp \
chromehandler.cpp \
passdata.cpp

HEADERS  += mainwindow.h \
chromehandler.h \
passdata.h

FORMS    += mainwindow.ui

И, как указано в MSDN API, включен wincrypt.h:

#include <windows.h>
#include <wincrypt.h>
#include <cstdlib>
#include <fstream>

Ошибка еще там, я проверил wincrypt.h Чтобы убедиться CryptUnprotectData определяется, и это:

  WINIMPM WINBOOL WINAPI CryptUnprotectData(DATA_BLOB *pDataIn,LPWSTR *ppszDataDescr,DATA_BLOB *pOptionalEntropy,PVOID pvReserved,CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct,DWORD dwFlags,DATA_BLOB *pDataOut);

Я пытался весь день … у кого-нибудь есть подсказка?
Большое спасибо !

1

Решение

Ключ в том, что crypt32 библиотека не построена с mingw, поэтому вы получаете ошибки компоновки.

Плохая новость в том, что не существует простого способа решить эту проблему. Вы можете прочитать о некоторых способах решения здесь:

В MingW отсутствуют некоторые функции из Win32 Crypto API

Обсуждение этого вопроса на форуме Qt можно найти здесь:

https://forum.qt.io/topic/25527/cannot-find-how-to-link-to-crypt32-dll

0

Другие решения


По вопросам рекламы [email protected]