将 Botan 与 Qt 一起使用时遇到问题
Trouble using Botan with Qt
我正在使用Qt,我正在尝试使用Botan。一切似乎都很顺利,但是当我去的时候:
Botan::BigInt myInt;
在我的构造函数中,它工作正常,但另一方面,如果我去:
Botan::AutoSeeded_RNG rng;
它抛出未定义的错误:
C:UsersStevieDesktopasfsdf-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__Debugdebugmainwindow.o:-1: In function `AutoSeeded_RNG':
C:UsersStevieDesktopasfsdf-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__Debug........botanincludebotanauto_rng.h:40: error: undefined reference to `_imp___ZN5Botan23Global_State_Management12global_stateEv'
C:UsersStevieDesktopasfsdf-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__Debug........botanincludebotanauto_rng.h:40: error: undefined reference to `_imp___ZN5Botan13Library_State10global_rngEv'
:-1: error: collect2: ld returned 1 exit status
我不知道为什么它可以与 BigInt 一起使用,但不能与AutoSeeded_RNG一起使用,但这是我的确切步骤:
编译了Qt Creator源代码中包含的Botan源代码"src/libs/3rdparty/botan/"
我从他们的网站上使用Windows安装程序(1.10)安装了Botan。
我把libBotan.a、libBotand.a、botan.dll和Botand.dll放在我安装Botan的位置(C:\botan)。我覆盖了已经存在的任何文件。
然后我创建了一个新的Qt项目,并在.pro文件中添加了以下行:
包含路径 += "C:/botan/include"
LIBS += "C:/botan/libBotan.a"接下来,我进入我的"主窗口.cpp",并添加:
#include <botan/botan.h>
一切都成功编译到这里。
我现在将其添加到我的构造函数中:
Botan::AutoSeeded_RNG rng;
现在抛出上述错误,无法运行。如果我将"AutoSeeded_RNG"替换为"BigInt",那么它可以完美编译。
感谢您的任何帮助,赫特莱克。
链接到 Botan 图书馆的声明对我来说看起来很奇怪。通常,您使用-L
开关指定库目录,并使用-l
开关添加库,即您应该使用
LIBS += -L"C:botan" -lBotan
请注意,库的前缀和后缀未在 lbotan
中指定。链接器将自动查找libbotan.a
或botan.dll
,具体取决于您的环境。
Botan也是QtCreator的一部分。也许你应该看看他们的存储库。您可以在那里找到.pri
和.pro
文件,可能只需要复制它们。他们还为新的Qt构建系统编写了一个.qbs
驱动程序。
编辑:我刚刚从QtCreator来源编译了Botan,正如您在帖子中也提到的。然后,我将所有生成的库复制到我自己的目录中,并且我还使用了QtCreator附带的botan.h
。在 Linux 上,我必须添加
LIBS += -L"/dir/into/which/i/copied/botan/dlls" -LBotan -ldl
到 qmake .pro
文件。请注意附加-ldl
否则我会得到对dlym
、dlerror
等的未定义引用。我可以毫无问题地用Botan::AutoSeeded_RNG
编译一个简单的示例。
- 编译包含字符串的代码时遇到问题
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 从其他类访问类时遇到问题
- 使用静态成员声明类时遇到问题
- C++ 填充数组时遇到问题
- 在将字符串放入字符串向量时遇到问题?
- 余数除法和不允许除以零 (c++) 时遇到问题
- 我在C++中使用 getline() 函数时遇到问题
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 在我的四叉树实现中遇到问题
- 在 c++ 中循环遍历数组时遇到问题
- 使用 MinGW 在 Windows 上构建 GLEW 时遇到问题
- 编译 Cilk Plus 程序时遇到问题
- 存储另一个函数返回的布尔数组时遇到问题
- 我在 OpenGL 中显示图像时遇到问题
- 我在解决此错误时遇到问题.我正在努力在主函数中传递数组
- 在 for 循环中更新两个变量时遇到问题C++
- 为什么我的程序在打开网络设备时遇到问题
- 在 Tensorflow C++ 中使用 FIFOQueue 时遇到问题
- 为什么我在虚幻引擎中的多态性和接口方面遇到问题?