- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在我的代码中使用了 crypto++。我不想使用它的依赖项,所以我尝试在我的文件夹中导入 crypto++ 文件并将它们包含在我的 .cpp 文件中
我有以下错误:
TEST.cpp:(.text+0x89a0): undefined reference to `EVP_CIPHER_CTX_init'
TEST.cpp:(.text+0x8cb0): undefined reference to `EVP_aes_128_cbc'
TEST.cpp:(.text+0x8cdd): undefined reference to `EVP_CipherInit_ex'
TEST.cpp:(.text+0x8d49): undefined reference to `EVP_CipherUpdate'
TEST.cpp:(.text+0x8dd6): undefined reference to `EVP_CipherFinal_ex'
TEST.cpp:(.text+0x922d): undefined reference to `EVP_CIPHER_CTX_cleanup'
我错过了什么?需要一些帮助。欣赏!我在 ubuntu 工作。
最佳答案
你需要做两件事,到目前为止你只做了一件。
您需要告诉您的编译器在哪里可以找到合适的声明。您已通过添加
完成此操作#include "evp.h"
在你的源文件中。 (根据您安装 crypto++ 的方式,您可能还需要告诉编译器在哪里可以找到 “evp.h”
,可能使用 -Isome_directory
。)
您缺少的步骤是告诉链接器在哪里可以找到您正在使用的函数的实际实现(编译后的代码)。根据分发版中包含的 Readme.txt
文件,bulding crypto++ 创建了一个名为 libcryptopp.a
的库文件。
所以像这样的东西应该可以完成工作:
gcc my_program.c -o my_program -lcryptopp
根据安装方式和安装位置,您可能还需要指定 -Lsome_directory
以告知链接器在哪里可以找到 libcryptopp.a
。 (gcc
命令调用编译器和链接器。-l
选项告诉链接器使用 libcryptopp.a
。 -L
选项,如果需要,告诉它要查找的目录。)
关于c++ - 链接错误 : undefined reference to EVP_CIPHER_CTX_ and EVP_CIPHER_CTX_init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7334941/
我在我的代码中使用了 crypto++。我不想使用它的依赖项,所以我尝试在我的文件夹中导入 crypto++ 文件并将它们包含在我的 .cpp 文件中 我有以下错误: TEST.cpp:(.text+
我是一名优秀的程序员,十分优秀!