C++ 我无法链接Libbortuna图书馆

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

我已经在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 = %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的答案可能是正确的,你明白了。感谢很多在轨道上的轻量级比赛,你可能为我节省了很多时间。你明白了。感谢很多在轨道上的轻量级比赛,你可能为我节省了很多时间。