Компиляция программ на C со статическими файлами - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь скомпилировать программу переменного тока со статической библиотекой, и она не работает.

Это ошибка:

неопределённая ссылка на «Calcuarea» collect2.exe: ошибка: ld вернул 1 состояние выхода.

Статические файлы были созданы с помощью компиляторов gcc / g ++.

Это основной код:

#include <stdio.h>
#include <stdint.h>

int calculatearea(int a , int b);
int main()
{


int c = calculatearea(2,4);

printf("%d",c);
getchar();
return 0;
}

edit:: снимок экрана ошибки компилятора

1 Ответ

0 голосов
/ 13 февраля 2019

Из приведенного выше кода мы видим, что вы объявили функцию int calculatearea(int a , int b);, но не написали ни одного определения для нее.и вы вызываете эту функцию в основном.Компилятор не находит определение для функции calculatearea и выдает ошибку.

Чтобы решить эту проблему:

1) Запишите определение для функции calculatearea в том же файле.

2) Используйте спецификатор extern с этим объявлением функции и убедитесь, что определение присутствует в библиотеке ссылок во время компиляции.

3) Как указано на рисунке, если область.o иметь определение функции calculatearea, затем скомпилировать, как показано ниже, это сгенерирует a.out в linux:

gcc filename.c area.o 
...