Я создал свою собственную библиотеку образцов, и я хочу использовать ее в своем основном файле. Весь мой код:Связанные статические библиотеки C
Sum.h:
#ifndef _SUM_H_
#define _SUM_H_
int add(int n1, int n2);
#endif
Sum.c:
#include <stdio.h>
#include "sum.h"
int add(int n1, int n2)
{
return n1 + n2;
}
main.c:
#include "sum.h"
int main(int argc, char* argv[])
{
printf("%d", add(1, 2));
return 0;
}
Для использования библиотеки, я написал эти команды:
gcc -c -o sum.o sum.c
ar rcs libsum.a sum.o
gcc main.c
Моя проблема заключается в том, что последняя команда, которая компилирует главный файл, возвращает мне эту ошибку:
main.c: In function ‘main’:
main.c:5:2: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by default]
printf("%d", suma(1, 2));
^
/tmp/ccyhA7Bc.o: In `main' function:
main.c:(.text+0x1a): reference to `sum' undefined
collect2: error: ld returned 1 exit status
Все файлы находятся в одном каталоге. Где моя ошибка? Как я могу ее исправить?
Это сообщение об ошибке, в которое вы включаете представителя точного исходного кода, который вы показываете? Я не вижу _printf («% d», suma (1, 2)); _ в вашем источнике, но сообщение об ошибке, похоже, содержит этот оператор. – ryyker
@ryyker: Кажется, что OP перевел код с испанского на английский, чтобы задать вопрос, но он забыл повторить сообщения об ошибках. – rodrigo
Действительно ... приводит к совету: * всегда * делайте все свое кодирование на английском языке. Мне гораздо легче поделиться позже (и, возможно, найти членов команды, вкладчиков, ...) –