包含 Crypt32.Lib && wincrypt.h 的对“_imp__CryptUnprotectData@28”的未定义引用
undefined reference to `_imp__CryptUnprotectData@28' with Crypt32.Lib && wincrypt.h included
我的一个项目有问题。
我将 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'
如标题所述,我在 .pro 中包含了 Crypt32.Lib 文件:
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);
我已经试了一整天了...有人知道吗?
非常感谢!
线索是 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
我的一个项目有问题。
我将 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'
如标题所述,我在 .pro 中包含了 Crypt32.Lib 文件:
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);
我已经试了一整天了...有人知道吗?
非常感谢!
线索是 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