2015-06-03 6 views
1

У меня проблема с моим одним из моих проектов.
Я использую QtCreator с MinGW и Qt 5.4.0undefined ссылка на `_imp__CryptUnprotectData @ 28 'с Crypt32.Lib && wincrypt.h включена

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

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

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

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

undefined reference to `[email protected]' 

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

QT  += core gui 
QT  += sql 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = ChromePass 

LIBS += -L$$PWD/ -lCrypt32 

TEMPLATE = app 


SOURCES += 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); 

Я пробовал целый день ... У кого-нибудь есть ключ?
Большое спасибо!

ответ

0

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

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

MingW missing some functions from the Win32 Crypto API

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

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

+0

Черт! Спасибо за ваш ответ, я посмотрю на это! – Olbaid