对__isoc99_sscanf的未定义引用

时间:2016-08-31 22:35:59

标签: c++ c

我有一个使用<my-title title="'I am First'"></my-title> 的静态C库libex.a。库是使用sscanf

编译的

我想在使用-std=c99编译的某些C ++代码中使用库函数,但是我收到以下错误:

-std=c++11

经过一番探讨之后,我发现lib/libex.a(srcfile.o): In function `my_function': /srcpath/srcfile.c:215: undefined reference to `__isoc99_sscanf' 由于向后兼容性黑客而导致版本出现问题,因此重定向到sscanf,所以我怀疑这是问题的根源。但是,我检查了我的__isoc99_sscanf版本,看起来很新,其他地方建议的解决方案(将glibc的副本更新为至少2.7)并不是很有用。

glibc

有什么建议吗?

当然,请告诉我是否有任何其他相关信息。

谢谢!

更新:如果我使用$ ldd --version ldd (Ubuntu EGLIBC 2.19-0ubuntu6.6) 2.19 编译libex.a,则错误消息将更改为-D_GNU_SOURCE。不确定这是否有助于弄清楚出了什么问题。

1 个答案:

答案 0 :(得分:0)

如果有其他人遇到此问题:

C ++代码的Makefile禁用标准库并使用标志-nostdlib -nodefaultlibs -nostartfiles启动文件。它改为链接到英特尔SGX SDK中包含的stdio.h版本,用于在内部区域内运行。该版本弃用了sscanf