Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Und schon wieder hab ich ein kleines -so hoffe ich- Problem.:( :( :(

Ich arbeite gerade an einem Projekt mit Hilfe des djgpp-Compiler, dass aus einer Hauptdatei und jeweils zwei Dateien mit Methodendefinition und Klassendeklarationen bestehen.

Da ich in der Hauptdatei und in der Datei mit der Methodendefinition Funktionen benutze, die die "stdio.h" und die "string.h" voraussetzen, wollte ich zunächst diese Headerdateien exakt einmal in dem Hauptprogramm setzen. Als ich dann das Progi starten wollte erschien ein Compilerfehler und zwar bei den Dateien mit der Methodendefinition. Und zwar kennt er bspw. die Funktion strcpy nicht, obwohl ich ja die string.h, die dafür nötig ist, vorher im Hauptprogramm eingesetzt habe.

Daraufhin habe ich die Headerdateien auch dort in die beiden Dateien (bzw. um genauer zu sein, in die Klassendefinition der entsprechenden Dateien) eingesetzt. Und siehe da die Compiler-Probleme sind zwar weg, jedoch erscheint jetzt ein Linkerfehler: "Error: multiple definition of ...". :confused: :confused: :confused:

SO, hat jemand von euch vielleicht eine Idee, wie man dieses Problem lösen kann.

Danke

mfg

helmito

Das System der #includes und Headerdateien wird durch den Präprozessor bearbeitet, also auf Dateiebene. In jeder Quellcodedatei, in der eine Bibliotheksfunktion verwendet wird, muss die jeweilige Headerdatei eingebunden werden, entweder direkt oder über eine andere Headerdatei. Der Standort des Hauptprogramms hat damit nichts zu tun.

Leider hast Du die Fehlermeldung nicht vollständig angegeben. Die Angabe, welches Symbol mehrfach definiert ist, und in welchen Modulen, ist für die Fehlersuche sehr hilfreich.

Also die genauen Fehlerzeilen lauten:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Error: c:/djgpp/lib/gcc-lib/djgpp/3.1/libgcc.a(unwind-dw2-fde.o): In function '___register_frame_info':

unwind-dw2-fde.o(100) Error: multiple definition of '___register_frame_info'

Error: c:/djgpp/lib/libc.a(rfinfo.o)(.text+0x0):rfinfo.c: first defined here

Error: collect2: ld returned 1 exit status

There were some errors

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Hilft dir das weiter???

Die oben genannten Zeilen sind genau 1:1 übernommen, da gibt es leider keine näheren Infos.

Aber du hast mich da auf eine Idee gebracht und zwar kann man ja unter Options die Library-Liste ändern. In dieser Liste waren die library libc und liballeg vorhanden. Da ich in der Rhide-Hilfe irgendwann gelesen habe, dass die library libc automatisch schon bekannt ist, hab ich diese aus der Liste genommen.

Danach hab ich das Programm gestartet und siehe da die Exe-Datei wurde gebildet.

Nun muss ich mir nur noch anschauen, ob keine weiteren Probleme vorhanden sind.

Wem dem nicht so ist meld ich mich noch einmal. Merci!!!!

:marine :marine :marine :marine

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.