首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt中使用Botan时遇到的问题

Qt中使用Botan时遇到的问题
EN

Stack Overflow用户
提问于 2012-08-16 20:14:54
回答 1查看 2.9K关注 0票数 0

我正在使用Qt,我正在尝试使用Botan。一切看起来都很顺利,但当我走的时候:

Botan::BigInt myInt;

在我的构造函数中,它工作得很好,但另一方面,如果我去:

Botan::AutoSeeded_RNG rng;

它抛出未定义的错误:

代码语言:javascript
复制
C:\Users\Stevie\Desktop\asfsdf-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__Debug\debug\mainwindow.o:-1: In function `AutoSeeded_RNG':
C:\Users\Stevie\Desktop\asfsdf-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__Debug\..\..\..\..\botan\include\botan\auto_rng.h:40: error: undefined reference to `_imp___ZN5Botan23Global_State_Management12global_stateEv'
C:\Users\Stevie\Desktop\asfsdf-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__Debug\..\..\..\..\botan\include\botan\auto_rng.h:40: error: undefined reference to `_imp___ZN5Botan13Library_State10global_rngEv'
:-1: error: collect2: ld returned 1 exit status

我不知道为什么它会与BigInt而不是AutoSeeded_RNG一起工作,但以下是我的具体步骤:

  1. 在“src/libs/3 3rdparty/ Botan /”编译Qt源代码中包含的botan源代码
  2. 我使用他们的网站的Windows (1.10)安装Botan。
  3. 我将libBotan.a、libBotand.a、botan.dll和Botand.dll放在我安装Botan的位置(C:\botan)。我覆盖了所有已经存在的文件。
  4. 然后,我创建了一个新的Qt项目,并在.pro文件中添加了以下行: += "C:/botan/include“ LIBS += "C:/botan/libBotan.a“
  5. 接下来,我将进入我的"mainwindow.cpp",并添加: #include <botan/botan.h> 所有东西都编译成功了。
  6. 我现在将其添加到构造函数中: Botan::AutoSeeded_RNG rng;

现在,上面的错误被抛出,无法运行。如果我将"AutoSeeded_RNG“替换为"BigInt",那么它编译得非常完美。

谢谢你的帮助,海泰克。

EN

回答 1

Stack Overflow用户

发布于 2012-08-17 08:37:46

在我看来,链接到Botan图书馆的声明看起来很奇怪。通常,您使用-L开关指定库目录,并使用-l开关添加一个库,即您应该使用

代码语言:javascript
复制
LIBS += -L"C:\botan" -lBotan

注意,在lbotan中没有指定库的前缀和后缀。链接器将根据您的环境自动查找libbotan.abotan.dll

Botan也是QtCreator的一部分。也许你应该看看储存库。您可以在那里找到.pri.pro文件,并且可能只需要复制它们。他们还为新的Qt构建系统编写了.qbs驱动程序。

编辑:我刚刚从QtCreator源代码编译了Botan,您在文章中也提到了这一点。然后,我在自己的目录中复制了所有生成的库,我还使用了随QtCreator附带的botan.h。在Linux上,我不得不添加

代码语言:javascript
复制
LIBS += -L"/dir/into/which/i/copied/botan/dlls" -LBotan -ldl

到qmake .pro文件。注意附加的-ldl,否则我得到了对dlymdlerror等的未定义引用。我可以用Botan::AutoSeeded_RNG编译一个简单的示例,没有问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11994803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档