неопределенная ссылка на stricmp - PullRequest
9 голосов
/ 07 мая 2011

Я пытаюсь создать метод, который находит и заменяет строку в строке, но у меня, похоже, есть ошибка во время компиляции. Могу ли я получить некоторую помощь в выяснении того, что происходит?

void replaceString(char *find, char *replace)
{
    int len_string,i;
    char temp[30];
    len_string=strlen(find);
    while(1)
    {
        for(i=0;i<len_string;i++) temp[i]=fgetc(edit);
            temp[i+1]=NULL;
        /* the stricmp() is used for comparing both string. */
        if(stricmp(find,temp)==0)
        {
            fprintf(edit,"%s ",replace);
            fclose(edit);
            exit(1);
        }
        fseek(edit,-(len_string-1),1);
    }       
}

ошибка, которую я получаю во время компиляции, это неопределенная ссылка на stricmp. Я знаю, что это неправильное соглашение о кодировании, но edit (объект типа FILE) в настоящее время является глобальной переменной.

Ответы [ 2 ]

26 голосов
/ 07 мая 2011

stricmp зависит от Windows.Если вы не используете Windows, strcasecmp.

3 голосов
/ 07 мая 2011

На самом деле ошибка возникает во время соединения, а НЕ во время компиляции. Ваш код был скомпилирован в объектный файл, ожидающий найти реализацию stricmp при связывании с другими объектными файлами, которые он не может найти. Отсюда ошибка: «неопределенная ссылка на stricmp». Как отметили в bmargulies, реализация доступна только в библиотеках Windows. Вы можете переключиться на strcasecmp (), если используете POSIX-совместимые системы.

...