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

时间:2015-06-20 16:20:47

标签: c++ c gcc linker

我编写了一个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

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

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

该cpp文件中的内容然后我使用

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

然后发生ld错误并说我遇到openssl/sha.h中定义的函数的未定义引用。我想知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

您还必须尊重订单:由于sll正在使用crypto,因此您必须先ssl,然后crypto

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