2

作成したライブラリをメイン ソース コードにリンクしようとしていますが、このエラーがスローされます。これを修正する方法を過去2時間探していましたが、何もうまくいきませんでした。

コンパイル:

cd "c:\Users\miros\OneDrive\Documents\C codes\labovi"
gcc 01main.c -o 01main
.\01main

d:/programs/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\miros\AppData \Local\Temp\ccGHtHKg.o:01main.c:(.text+0x46): 「faktorijel」への未定義の参照 d:/programs/mingw/bin/../lib/gcc/mingw32/9.2.0/.. /../../../mingw32/bin/ld.exe: C:\Users\miros\AppData\Local\Temp\ccGHtHKg.o:01main.c:(.text+0x72): ' への未定義の参照suma' collect2.exe: エラー: ld が 1 つの終了ステータスを返しました

01ucitavanje.h

#ifndef UCITAVANJE_H
#define UCITAVANJE_H
#include <stdio.h>
#include <stdlib.h>

long long *niz;
int n;

void ucitavanje();
#endif

01ucitavanje.c

#include "01ucitavanje.h"

void ucitavanje(){
    scanf("%d", &n);
    niz = malloc(sizeof(long long) * n);
    for (int i = 0; i < n; i++)
        scanf("%d", niz + i);
}

01izracunavanje.h

#ifndef IZRACUNAVANJE_H
#define IZRACUNAVANJE_H
#include <stdio.h>

long long faktorijel(int n);
long long suma(long long *niz, int n);

#endif

01izracunavanje.c

#include "01izracunavanje.h"

long long faktorijel(int n){
    long long f;
    for (int i = 2; i <= n; i++)
        f *= i;

    return f;
}

long long suma (long long *niz, int n){
    long long s = niz[0];
    for (int i = 1; i < n; i++)
        s += niz[i];
    return s;    
}

main.c

#include "01izracunavanje.h"
#include "01ucitavanje.h"

int main(){
    ucitavanje();
    for (int i = 0; i < n; i++)
        niz[i] = faktorijel((int)niz[i]);
    printf("%d", suma(niz, n));
    free(niz);
    return 0;    
}
4

2 に答える 2