| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: C Modularisierung im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Ich möchte mir die Modularisierung in C etwas näher bringen. Ich habe folgenden Versuch gemacht um es etwas besser ...
![]() |
| | #1 (permalink) |
| Registriert seit: 25.11.06 ![]() Likes: 0 | Anzeige Ich möchte mir die Modularisierung in C etwas näher bringen. Ich habe folgenden Versuch gemacht um es etwas besser zu verstehen. Komme aber leider nicht zu meinem Ziel Ich habe für das modul einen Ordner "modules" angelegt. In diesem Ordner modules sind enthalten test.c Code: #include "test.h"
int func1(int x)
{
return x;
} test.h Code: #ifndef TEST_H #define TEST_H extern int func1(int x); #endif und im Hauptordner ist die Hauptdatei enthalten main.c Code: #include <stdlib.h>
#include <test.h>
int main()
{
int test = func1(4);
return 0;
} das Modul compile ich mit Code: cc -c -Wall test.c die Hauptdatei compile ich mit Code: gcc -Imodules -o main main.c Code: gcc -Imodules -o main main.c /tmp/ccWIyNhi.o: In function `main': main.c:(.text+0xe): undefined reference to `func1' collect2: ld returned 1 exit status Danke |
| | |
| | #2 (permalink) |
| Registriert seit: 09.12.09 ![]() Likes: 0 | Wenn du test.c kompilierst bekommst du eine Objektdatei heraus (wahrscheinlich test.o). Deine main.c soll also die Funktion aus dieser Objektdatei verwenden. Dazu müssen sie gelinkt werden. Das sagst du dem gcc indem du ihm die Objektdatei auch übergibst (er gibt die Daten dann an den Linker weiter): Code: gcc -Imodules -o main main.c test.o
__________________ B4 09 BA 08 01 CD 21 C3 48 61 6C 6C 6F 20 57 65 6C 74 21 24 Geändert von Thunder11 (29.01.11 um 19:58 Uhr) |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 25.11.06 ![]() Likes: 0 | wunderschön, danke.Ich habe in Tutorials gesehen, dass man die main.c auch als Objekt cimpilen muss und dann mit cc linken muss. Dass ging so auch bei mir. Aber das hat mich sehr irritiert, da ich es mit gcc -I... -o..... usw. machen wollte. Im nachhinein ist es logisch, dass es ja so trotzdem irgendwie gelinkt werden muss. Ich werde mit mal make anschauen |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |