Неопределенная ошибка символа со встроенной функцией Solaris (SunOS 5.9)

Я определил встроенную функцию copy_string в файле cpstr.c и создал файл .so (libtest.so) для файла cpstr.c. При попытке связать этот libtest.so для test.c, я получаю сообщение об ошибке

ild: (undefined symbol) char*copy_string(char*,const char*) -- referenced in the text segment of test.o

Когда я удалил inline из функции copy_string, он работает нормально.

Ниже приведены команды, которые мы попробовали,

CC  -c  -xarch=v9  test.c

CC -G  -xarch=v9 -o libtest.so -Kpic cpstr.c

CC -xarch=v9   -g -o test  test.o  /myplace/libtest.so

Когда мы попытались получить содержимое libtest.so, я не смог найти copy_string имя в файле libtest.so. Но я могу видеть это в содержании, когда я удалил «inline» из copy_string функция

Может кто-нибудь, пожалуйста, предложите мне решение, чтобы избавиться от неопределенной ошибки символа без удаления встроенной функции.

test.c

#include <stdio.h>
extern char  *copy_string (char *, const char*);
int main()
{
char str[50];
copy_string(str,"hello");
printf("%s\n", str);
return 0;
}

cpstr.c

#include<string.h>
inline char    *copy_string (char *str1, const char *str2)
{
return (str2 ? strcpy (str1, str2) : (char *) 0);
}

CC  -c  -xarch=v9  test.c
CC -G  -xarch=v9 -o libtest.so -Kpic cpstr.c

CC -xarch=v9   -g -o test  test.o  /space/systpe/devendra/dhsqlroot/libtest.so
ild: (undefined symbol) char*copy_string(char*,const char*) -- referenced in the text segment of test.o

1

Решение

Он хочет, чтобы вы реализовали встроенную функцию в заголовочном файле

0

Другие решения

Функции со встроенным спецификатором функции должны быть определены в каждом модуле, где они используются. Компилятору нужно видеть свои встроенные определения, чтобы правильно генерировать объектный код. Поэтому обычно их определение помещается в заголовок.

0

По вопросам рекламы [email protected]