在Qt Creator中使用Crypto++时未定义的引用

Undefined Reference when Using Crypto++ in Qt Creator

提问人:Ryan 提问时间:7/25/2023 更新时间:7/25/2023 访问量:20

问:

我正在尝试在我的Qt Creator项目中在Windows上使用crypto++。我正在使用 qmake,所以我有一个 .pro 文件并包含以下行:

INCLUDEPATH += "C:\Users\username\Downloads\cryptopp880"
DEPENDPATH += "C:\Users\username\Downloads\cryptopp880"

LIBS += "-LC:\Users\username\Downloads\cryptopp880\x64\Output\Release\cryptlib.lib"

但是,当我尝试构建我的项目时,我收到 400+ 未定义的引用错误,这些错误引用了我在代码中使用的所有函数。像这样:

undefined reference to 'CryptoPP::Algorithm::Algorithm(bool)'
C:\Users\username\Downloads\cryptopp880\cryptlib.h

我不明白为什么这些是未定义的引用,因为 cryptlib.lib 文件应该向链接器阐明所有这些。

我尝试使用 Properties>C/C++>Runtime Library>Multi-threaded Debug DLL 版本(我在网上找到的是 Qt 的正确版本)重建 cryptlib.lib 文件。我还尝试将构建的配置属性更改为与我的 Qt 项目一致的 C++17 版本。这两项更改都是在 Visual Studio 中完成的。

我还尝试使用Qt GUI而不是手动.pro文件编辑来包含库。

这些更改都无法解决问题。许多在线答案都引用了“libcryptopplib.a”,这是我在使用 Visual Studio 时不构建的文件,尽管我认为 cryptlib.lib 应该以完全相同的方式工作。

qt qt-creator qmake undefined-reference crypto++

评论


答:

0赞 Ryan 7/25/2023 #1

解决。问题是我用 visual studio 编译 crypto++,但我的 Qt 应用程序是使用 mingw64 和 gcc 编译的。为了解决这个问题,我下载了 msys2 并打开了 mingw64。然后我打开了我的 crypto++ 目录和“make”,这导致了 libcryptopp.a,并且在我的项目中使用它。

https://groups.google.com/g/cryptopp-users/c/Q8_6mSS5ZSw 在解决方面非常有帮助。