我正在将程序链接到外部静态库。
这是我看到的众多错误之一:

undefined reference to `tcp_outratectl_tmofactor'

这在外部库c文件中定义为:
int tcp_outratectl_tmofactor = 1;

这在我的程序中使用,如图所示:
/* This is just a snippet */
extern int tcp_outratectl_timerticks;
if (count) {
    tcp_outratectl_timerticks = *count;
}

我从库中提取了对象文件并试图查找符号
$ nm -A ./*.o | grep tcp_outratectl_timerticks
./tcp_timer.o:0000000000000018 B rumpns_tcp_outratectl_timerticks
./tcp_usrreq.o:                 U rumpns_tcp_outratectl_timerticks

如您所见,tcp_outratectl_tmofactor是一个全局BSS符号,但它后面有“rumpns”前缀,这会导致链接器错误。
我该怎么解决?

最佳答案

我正在使用的外部库在尚未成为其名称空间一部分的符号后面添加“rumpns”。
修改makefile以删除此行为对我有效

关于c - 与使用 namespace 的外部库链接时,如何解决C中的 undefined reference ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25153411/

10-16 05:15