Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

undefined reference to `strnlen_s', strncpy_s',strncat_s' [closed]

Tags:

c

    length += strnlen_s(str[i],sizeof(str[i]));

//create array to hold all strings combined

char joke[length + strnlen_s(preamble, sizeof(preamble)) + 1];

if(strncpy_s(joke, sizeof(joke), preamble, sizeof(preamble)))
{
    printf("Error copying  preamble to joke.\n");
    return 1;
}

//Concatenate strings in joke

for(unsigned int i = 0; i < strCount; ++i)
{
    if(strncat_s(joke, sizeof(joke), str[i], sizeof(str[i])))
    {

joiningstring.c:32:3: warning: implicit declaration of function ‘strnlen_s’ [-Wimplicit-function-declaration]
joiningstring.c:38:2: warning: implicit declaration of function ‘strncpy_s’ [-Wimplicit-function-declaration]
joiningstring.c:48:3: warning: implicit declaration of function ‘strncat_s’ [-Wimplicit-function-declaration]
/tmp/ccBnGxvX.o: In function `main':
joiningstring.c:(.text+0x163): undefined reference to `strnlen_s'
joiningstring.c:(.text+0x188): undefined reference to `strnlen_s'
joiningstring.c:(.text+0x1fd): undefined reference to `strncpy_s'
joiningstring.c:(.text+0x251): undefined reference to `strncat_s'
collect2: ld returned 1 exit status
like image 655
Domi Avatar asked Sep 15 '13 07:09

Domi


1 Answers

The strlen_s, strncpy_s and strncat_s functions are Microsoft extensions to the standard C library. They are defined in the string.h header, and are part of the libraries automatically linked.

So, since the function appear to be undefined (you get implicit declaration of function errors), and not found (due to the undefined reference errors from the linker), I'd say that you either are trying to compile this code on a non-Microsoft system (in which case, I'd suggest using the alternatives functions strlen, strncpy, strncat) or forgot the include and asked the compiler to not include default library (then you should fix the code and the compiler invocation).

like image 185
Sylvain Defresne Avatar answered Oct 19 '22 19:10

Sylvain Defresne