C++ 我无法链接Libbortuna图书馆
我已经在Linux下构建了FreeBSD。我所做的管理只是在src/px.h和src/internal.h中注释C++ 我无法链接Libbortuna图书馆,c++,linux,linker,g++,undefined-reference,C++,Linux,Linker,G++,Undefined Reference,我已经在Linux下构建了FreeBSD。我所做的管理只是在src/px.h和src/internal.h中注释,并在系统标准路径中创建库的符号链接 然后,我为它编写了一个小测试程序: #include <cstdlib> #include <fortuna.h> int main () { int i = 0; fortuna_get_bytes (4, (unsigned char *) &i); printf ("test fortuna i
,并在系统标准路径中创建库的符号链接
然后,我为它编写了一个小测试程序:
#include <cstdlib>
#include <fortuna.h>
int main () {
int i = 0;
fortuna_get_bytes (4, (unsigned char *) &i);
printf ("test fortuna i = %d \n", i);
return 0;
}
我还尝试了-L/usr/lib/
我的simlink所在的位置,但结果相同
我也尝试用gcc代替g++,但结果也是一样的
我检查了库是否位于以下路径中:
# ls -l /usr/lib/libfortuna.so
lrwxrwxrwx 1 root root 28 26 avril 17:27 /usr/lib/libfortuna.so -> /usr/local/lib/libfortuna.so
我检查了二进制文件中是否定义了符号fortuna\u get\u bytes
:
$ objdump -T /usr/local/lib/libfortuna.so | grep fortuna
/usr/local/lib/libfortuna.so: file format elf64-x86-64
0000000000005000 g DF .text 000000000000007f Base fortuna_get_bytes
0000000000004f80 g DF .text 000000000000007d Base fortuna_add_entropy
$ nm -g -C /usr/local/lib/libfortuna.so | grep fortuna
0000000000004f80 T fortuna_add_entropy
0000000000005000 T fortuna_get_bytes
我不知道还能做什么。请注意以下几点: < P>检查FUNTION源,它是一个C语言库,没有C++的兼容性代码;在我看来,这会给你带来调用约定和名称混乱的问题
C++不是C
你可以试试:
extern "C" {
#include <fortuna.h>
}
extern“C”{
#包括
}
强制使用C链接将库的声明带入代码中,但这有点像黑客。理想的是,库的头将在内部使用此技术,以允许C++兼容,按约定。 < P>检查FUNTION源,它是一个C语言库,没有C++的兼容性代码;在我看来,这会给你带来调用约定和名称混乱的问题
C++不是C
你可以试试:
extern "C" {
#include <fortuna.h>
}
extern“C”{
#包括
}
强制使用C链接将库的声明带入代码中,但这有点像黑客。理想情况下,库的头将在内部使用此技术来实现C++兼容性,按照约定。链接器会抱怨如果您的路径不正确,则无法找到<代码> -LoFuff。我认为Lightness下面的答案可能是正确的。如果你的路径不正确,链接器会抱怨找不到-lfortuna
。我认为下面Lightness的答案可能是正确的,你明白了。感谢很多在轨道上的轻量级比赛,你可能为我节省了很多时间。你明白了。感谢很多在轨道上的轻量级比赛,你可能为我节省了很多时间。