Определяется функция в заголовке, но при ссылке появляется неопределенная ошибка ссылки - PullRequest
0 голосов
/ 26 апреля 2020

Я использую lab6. c в качестве программы вождения для проверки каждого. До того, как я разделил их на собственные файлы, функции работали. Я должен создать пользовательский файл библиотеки. Шаги, которые я предпринял, состояли в том, чтобы использовать wall для создания объектного файла для каждого. c файла в папке и связать их вместе, используя ar rcs. Затем я использовал art liblab6 (имя файла), чтобы убедиться, что каждый объект связан с ним. Постоянно получаю сообщение об ошибке "lab6. c :(. Text + 0x10): неопределенная ссылка на` str_len '".

Это первая функция, определенная в моем заголовочном файле

#ifndef LAB_6_LIB_H
#define LAB_6_LIB_H

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int all_letters(char *s);

Вот. c файл

#include "lab6lib.h"

int all_letters(char *s)
{
    int i = 0;
    while(s[i] != '\0'){
        if(!isalpha(s[i]))
            return 0;
        i++;
    }

    return 1;
}

А вот драйвер

#include "lab6lib.h"
#include <stdio.h>


int main(void)
{
    int i = str_len("all");
    printf("\n%d", str_len("all"));
    printf("\n%d", str_len("hahahahahahahahahahahahah"));
    printf("\n%d", all_letters("poop"));
    printf("\n%d", all_letters("1haha"));
    printf("\n%d", all_letters("SpongeBobby"));
}

Между справочными материалами из класса и тем, что я мог найти в Интернете, я определил это везде, я должен иметь. Я даже нашел копию этого задания из двух лет go на github, а заголовок, драйвер и файл c выглядят так же, как у меня. Мне удалось выполнить все шаги, но я продолжаю получать эту ошибку при компоновке. Единственное, что я не сделал, это попытался скомпилировать это на моей ma c. Я что-то упускаю? Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Попробуйте функцию strlen(char *str) из библиотеки <string.h>, или вы должны включить прототип функции str_len в файл заголовка lab6lib.h

0 голосов
/ 26 апреля 2020

Так что, несмотря на мои ссылки о том, что в объекте библиотеки нет .a, g cc -o lab6 lab6. c -Lcustomstrings liblab6.a закончила работу и компиляцию. Я могу начать тестирование сейчас.

...