首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义的对'strnlen‘的引用尽管有“string.h.h”,但包括

未定义的对'strnlen‘的引用尽管有“string.h.h”,但包括
EN

Stack Overflow用户
提问于 2015-05-13 00:17:29
回答 4查看 13.1K关注 0票数 8

我正在尝试使用为LPC1769在LPCXpresso上创建一个项目。我有一个C文件在呼叫

代码语言:javascript
复制
#include <string.h>
int main()
{
    //some stuff
    strnlen(SomeString, someInt);
}

我得到了一个错误:

代码语言:javascript
复制
Undefined reference to 'strnlen'

奇怪的是,strcpy、strncpy或其他常见的字符串函数没有问题。

我正在构建一个Cortex-M3处理器编译器,在Eclipse中使用的是:手臂-无eabi-gcc,我已经勾选了MCU链接器选项:在Ubuntu上运行Eclipse没有启动或默认的lib。

虽然只使用strlen可以很容易地绕过这个问题,但我实际上遇到了使用使用strnlen的库的问题,而且我不想搅乱库的源代码。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-05-13 00:45:02

strnlen函数(直到最近)还是一个特定于Linux的函数(一些文档,比如GNU libc手册仍然说它是一个"GNU扩展“)。目前的手册页表示,它是POSIX1.2008的一部分。由于您正在交叉编译,因此目标机器的运行时库可能没有此功能。2011年的论坛发帖就是这么说的。

票数 7
EN

Stack Overflow用户

发布于 2017-01-06 10:15:21

我添加了同样的问题,我发现使用-std=gnu++11编译器标志解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2015-05-13 00:57:03

以下内容可能适用于您(因为strnlen()不是运行时库的一部分)。

定义自己的/本地版本的strnlen()

代码语言:javascript
复制
int strnlen(char *param, int maxlen)
{  
    // Perform appropriate string manipulation ... as needed.
    // Return what you need.
};  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30203551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档