Неопределенная ссылка на «функцию» - PullRequest
0 голосов
/ 15 апреля 2019

Редактировать # 1: пожалуйста, найдите решение в качестве ответа на этот первоначальный пост в качестве примера кода. Пожалуйста, попробуйте также найти возможное решение в Что такое неопределенная ссылка / неразрешенная внешняя ошибка символа и как ее исправить? Это не помогло мне, но, возможно, оно подходит для вас.

Я пытаюсь создать проект, который состоит из каждых двух заголовочных файлов и файлов приложения. Если я скомпилирую каждый файл, ошибок не будет. Если я строю проект, я сталкиваюсь с приведенной ниже ошибкой.

cd 'D:\Master\M_32561\9000_A\B13-03'
P:\PortableApps\MinGW\msys\1.0\bin\make.exe -f Makefile CONF=Debug
"/P/PortableApps/MinGW/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make.exe[1]: Entering directory `/d/Master/M_32561/9000_A/B13-03'
"/P/PortableApps/MinGW/msys/1.0/bin/make.exe"  -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/b13-03.exe
make.exe[2]: Entering directory `/d/Master/M_32561/9000_A/B13-03'
mkdir -p dist/Debug/MinGW-Windows
gcc     -o dist/Debug/MinGW-Windows/b13-03 build/Debug/MinGW-Windows/B13-03_F1.o build/Debug/MinGW-Windows/B13-03_MAIN.o 
build/Debug/MinGW-Windows/B13-03_F1.o: In function `anzeigen_artikelbestand':
D:\Master\M_32561\9000_A\B13-03/B13-03_F1.c:283: undefined reference to `ausgeben_artikelbestand_mit_listenkopf'
build/Debug/MinGW-Windows/B13-03_MAIN.o: In function `main':
D:\Master\M_32561\9000_A\B13-03/B13-03_MAIN.c:39: undefined reference to `erfassen_artikel'
D:\Master\M_32561\9000_A\B13-03/B13-03_MAIN.c:42: undefined reference to `anzeigen_artikel'
D:\Master\M_32561\9000_A\B13-03/B13-03_MAIN.c:45: undefined reference to `aendern_artikel'
D:\Master\M_32561\9000_A\B13-03/B13-03_MAIN.c:48: undefined reference to `loeschen_artikel'
collect2.exe: error: ld returned 1 exit status
make.exe[2]: *** [dist/Debug/MinGW-Windows/b13-03.exe] Error 1
make.exe[2]: Leaving directory `/d/Master/M_32561/9000_A/B13-03'
make.exe[1]: *** [.build-conf] Error 2
make.exe[1]: Leaving directory `/d/Master/M_32561/9000_A/B13-03'
make.exe": *** [.build-impl] Error 2

Проект состоит из следующих файлов:

  1. B13-03_MAIN.h
  2. B13-03_MAIN.c
  3. B13-03_H1.h
  4. B13-03_F1.c

Неопределенные функции объявлены в B13-03_MAIN. h и определены в B13-03_MAIN. c . Оба файла приложения используют B13-03_MAIN. h в качестве прототипа.

Большое спасибо за любую помощь.

IDE Version

Tools

Plugins

1 Ответ

0 голосов
/ 16 апреля 2019

Проблема касалась неправильного вложения неопределенных функций. Я фокусируюсь на B13-03_MAIN. h и B13-03_MAIN. c .

/* B13-03_MAIN.h */
create_article();
show_article();
edit_article();
delete_article();

Реализация с выпуском:

/* B13-03_MAIN.c */
#include <stdio.h>
#include "B13-03_MAIN.h"
#include "B13-03_H1.h"

void main(void) { 
  switch(option) {
    case abc_c: create_article(); break;
    case abc_s: show_article(); break;
    case abc_e: edit_article(); break;
    case abc_d: delete_article(); break;
    default:    printf("Undefined option.");
  }

  void create_article(void) {
  ...
  }

  void show_article(void) {
  ...
  }

  void edit_article(void) {
  ...
  }

  void delete_article(void) {
  ...
  }
} /* This curly braces is incorrectly nested */

Реализация без вопросов:

void main(void) { 
  switch(option) {
    case abc_c: create_article(); break;
    case abc_s: show_article(); break;
    case abc_e: edit_article(); break;
    case abc_d: delete_article(); break;
    default:    printf("Undefined option.");
  }
} /*Incorrectly nested curly brace should be implemented here */

void create_article(void) {
...
}

void show_article(void) {
...
}

void edit_article(void) {
...
}

void delete_article(void) {
...
}
...