链接器错误,使用 g++ 到 link 到 gcc 编译的库,未定义对该函数的引用

Linker error, using g++ to link to a library compiled by gcc, undefined reference to that function

我写了一个调用 openssl/sha.h 中定义的函数的 C 函数,假设声明是 "helper.h",实现是 "helper.c”。然后我使用 gcc 和将其放入图书馆:

gcc -std=c99 -lcrypto -lssl -c helper.c -o helper.o
ar -rc helper.a helper.o

然后我写了一个cpp函数调用"helper.h"中声明的函数。我添加了

extern "C" {
#include "helper.h"
} 

那个cpp文件里的东西然后我用

g++ test.cpp helper.a -o cpp

然后出现 ld 错误,提示我遇到 openssl/sha.h 中定义的函数的未定义引用。我想知道如何解决这个问题?

sslcrypto 库添加到您的最终命令中,以便 link 这些库到您的程序中。

您还必须遵守顺序:由于 sll 使用的是 crypto,因此您必须先放置 ssl,然后放置 crypto

g++ test.cpp helper.a -o cpp -lssl -lcrypto