2

一个多星期以来,我尝试在 QT 中实现我可能找到的每个 Cryptography-Library 来加密文件和字符串,但这对我来说似乎是不可能的。我从一个干净的 Ubuntu 安装开始,更新了所有内容,安装了 QT,并且由于 Openssl 已经安装在 Ubuntu 上,我尝试从它开始。我已经阅读了一些教程,尝试了一些示例,但我所做的似乎都没有解决我的“未定义引用”问题。我搜索了可能必须添加到项目文件中的正确库,但没有任何效果。由于 Openssl 对我不起作用,我在“QCA”、“Crypto++”、“MCrypt”和我找到的一些公共图书馆中搜索了自己的方式。前三个我得到了“未定义的参考”

我对整个加密技术很陌生,但我根本无法让它工作。如果有人可以让我从痛苦中解脱出来并帮助我让任何库从一个干净的 ubuntu 安装和 QT 中工作,那就太棒了。我只是做错了什么……不可能是我在网上找到的教程对其他人来说都很好用。

作为一个例子....我安装了包“libmcrypt-dev”、“libmcrypt4”和“mcrypt”,并按照这里的代码示例:mcrypt linux 如何使用 rijndael 256 cbc 包含工作正常,可以找到头文件并且 mcrypt 类的代码被突出显示,所以它应该可以工作,对吧?但是当我尝试编译代码时,在使用来自 mcrypt 的函数的每一行中都会出现“未定义的引用”错误。这也发生在所有其他图书馆......虽然我找不到其他人所做的任何遗漏。任何地方都没有说明额外的包含,也没有我必须在项目文件中包含的任何其他库引用。

我究竟做错了什么?我担心我也没有什么可以向你们展示的,除了你想看到一个带有“未定义引用”错误的巨大列表。:-/

如果我尝试这样的事情:

#include <mcrypt.h>

int main()
{
    MCRYPT td = mcrypt_module_open("rijndael-256", NULL, "cbc", NULL);
    mcrypt_module_close(td);
}

我收到以下错误

error: undefined reference to `mcrypt_module_open'
error: undefined reference to `mcrypt_module_close'

项目文件:

QT       += core

QT       -= gui

TARGET = untitled
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp
4

1 回答 1

2

error: undefined reference说,链接器本身找不到库。它有头文件,你已经包含了,但看不到源代码。要解决这个问题,你必须告诉链接器,源在哪里,所以在你的*.pro文件中添加添加行,例如像这样的libmcrypt库:

LIBS += -L/path/to -lmcrypt

在 linux 中,如果你已经安装了 apt-get install 或类似的东西,通常不需要 -L

于 2013-07-15T21:39:38.130 回答