链接器错误,使用 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
中定义的函数的未定义引用。我想知道如何解决这个问题?
将 ssl
和 crypto
库添加到您的最终命令中,以便 link 这些库到您的程序中。
您还必须遵守顺序:由于 sll
使用的是 crypto
,因此您必须先放置 ssl
,然后放置 crypto
。
g++ test.cpp helper.a -o cpp -lssl -lcrypto
我写了一个调用 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
中定义的函数的未定义引用。我想知道如何解决这个问题?
将 ssl
和 crypto
库添加到您的最终命令中,以便 link 这些库到您的程序中。
您还必须遵守顺序:由于 sll
使用的是 crypto
,因此您必须先放置 ssl
,然后放置 crypto
。
g++ test.cpp helper.a -o cpp -lssl -lcrypto