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

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

本文关键字:链接 未定义 引用 函数 gcc 错误 使用 g++ 编译      更新时间:2023-10-16

>我写了一个C函数,它调用了openssl/sha.h中定义的函数,假设声明是"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库添加到最终命令中,以便将这些库链接到程序。

您还必须尊重顺序:由于sll正在使用crypto因此您必须将ssl放在第一位,然后将crypto放在后面。

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