неопределенная ссылка на вызов функции - PullRequest
0 голосов
/ 01 июля 2018

Я новичок в языке Си. У меня есть задание, в котором я должен использовать многомодульную концепцию для компиляции программы. Я получаю ошибку «неопределенная ссылка». Программа просто конвертирует фаренгейт в градусы Цельсия; если я использую только один скрипт, который включает прототип функции, вызов и определение, он просто работает, но с многомодульной концепцией, он продолжает давать ошибку «неопределенная ссылка». Должен ли я поместить все три файла в одну или в другую папку?

conversion.c:

/*
* filename: conversion.c
* Purpose: The file contains function prototype
* to convert farenheit to celsius 
*/

#include "conversion.h"
//conversion for farenheit to celsius
float convertTemp(float tmp)
{
    return ((tmp-32)*0.555);
}

conversion.h:

/*
* FILENAME:  conversion.h
* PURPOSE: The file contains function prototype
* for conversion.c
*/
float convertTemp(float tmp);

convert_driver.c:

/*
* FILENAME:  convert_driver.c
* PURPOSE:   The file contains main() function
* and user interface.
*/
#include <stdio.h>
#include "conversion.h"
int main(void)
{
    float x,y;
    printf("Please enter your temperature for conversion:  \n");
    scanf("%f", &x);
    y = convertTemp(x);
    printf("Converted Temperature: %0.2f\n", y);
    return 0;
}

Я получаю сообщение об ошибке для строки:

    y=convertTemp(x)

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 01 июля 2018

Проблема с связыванием скомпилированных объектов.

Попробуйте вручную скомпилировать ваши источники, например так:

gcc -o convert_driver convert_driver.c conversion.c

Таким образом, после компиляции компилятор знает, на что ссылаться.

Вы также можете вручную скомпилировать источники в объекты и использовать статический компоновщик для генерации исполняемого файла:

gcc -c -o convert_driver.o convert_driver.c
gcc -c -o conversion.o conversion.c
ld -o convert_driver convert_driver.o conversion.o

Для типичной среды IDE проверьте, есть ли опция «Создать проект». Поддержка нескольких файлов обычно входит в понятие «проект».

...