【问题标题】:undefined reference to `_imp__CryptUnprotectData@28' with Crypt32.Lib && wincrypt.h included未定义对 `_imp__CryptUnprotectData@28' 的引用,包括 Crypt32.Lib && wincrypt.h
【发布时间】:2015-06-03 15:39:01
【问题描述】:

我的一个项目有问题。
我将 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 = 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);

我一直在尝试一整天...有人知道吗?
非常感谢!

【问题讨论】:

    标签: c++ qt qt-creator wincrypt


    【解决方案1】:

    线索是 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

    【讨论】:

    • 该死!谢谢你的回答,我会调查的!
    猜你喜欢
    • 2012-07-01
    • 2013-12-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 2014-02-18
    • 1970-01-01
    • 2015-10-23
    相关资源
    最近更新 更多