Hallo zusammen, ich kann mir zwar denken an was es liegt doch weis ich nicht wie ich diesen Fehler vermeiden kann daher versuchen ich mal zu beschreiben wie das Programm aufgebaut ist. Ich habe das main Programm und in diesem "#include <Projekt1.h>" include ich das Headerfile Projekt1.h. Nun stehen jedoch verschiedene Funktionen die ich in in einer Bibliothek Projekt1.LIB.In verschiedenen Funktionen diese Projekt1.LIB ist auch das Projeht1.h includet.Wenn ich nun eine Funktion von der Bibliothek im main Programm aufrufe hagelt er Fehlermeldungen. Ich denke weil ich die dieses Projekt1.h sowohl in der Bibliothek aufrufe und auch im main.Ich habe belesen das es wohl mit #ifndef funktioniert und habe auch schon probiert verschiedene Variationen jedoch ohne Erfolg. Sorry Anfänger aber vielleicht hilft mir trotzdem jemand auf die Sprünge. Tom
Rück mal Deinen Bildschirm etwas näher ran, ich kann die Fehlermeldung nicht lesen. Peter
P.S. Ich meinte natürlich die komplette Fehlermeldung. Da muß nämlich noch mehr stehen. Peter
@Peter, hier kommt der Bildschirm. Alle SYMBOL: Name sind in der Projekt.H definiert. Diese ist sowohl I2CBUS.LIB und im main Programm #includet. Ich denke hier liegt der Fehler bzw. das Problem. Auf alle Fälle Danke für die Schnelle Rückmeldung. Tom
Könnte es sein, daß "C_ARRAY_STAENDE_LADEN" eine Variable ist, die in der Headerdatei nicht nur deklariert, sondern auch definiert ist? Das ist ein Fehler. In die Headerdatei davor das Wörtchen "extern" schreiben und die Definition (und Initialisierung) der Variablen in ein C-Sourcefile verlagern.
Hallo, C_Array_Staende_Laden ist eine Funktion die im Headderfile mit extern definiert ist Tom
Hallo, mir ist gerade etwas aufgefallen. Ich speichere die Array Stande von 5 Arrays in 5 Integerwerte. Wenn ich einen neuen Datensatz in eine Array speichere speichere ich diesen auch im RTC per I2C zwischen damit ich bei einem Stromausfall den Arraystand aus dem RTC wieder auslesen kann damit ich da weitermache wo ich vor dem stromausfall war.Das speichern der Stände mache ich einzel mit einer Funktion void Funktion (unsigned int).Das funktioniert auch.Wenn ich nun die Arraystände auslesen will mache ich das auch mit einer Funktion void Funktion (void) ich lese die Arraystände in der Funktion einzel mit Pointer aus und versuche sie dann direkt in den entsprechenden Arrraystand zu überschreiben mit dem eingelesenen Wert.Eventuell liegt es daran!?!?!?!? Tom
Es muß irgendwo ne doppelte Definition auftreten von "S2000W1_Z" usw. und eine davon ist in der Bibliothek. Ist denn diese Bibliothek schonmal mit anderen Programmen getestet worden, ob sie überhaupt funktioniert ? Wenn Du den Quelltext hast, würde ich keine Bibliothek verwenden, sondern diesen. Es ist sonst manchmal schwer, irgendwelche Seiteneffekte in Zusammenhang mit diesen Black-Boxes zu finden. Außerdem sind Bibliothken ja schon vorkompiliert und damit an ein bestimmtes Memorymodell bzw. Bankingschema gebunden. Deshalb gibt es ja von den Standardbibliotheken soviel verschiedene. Peter
@Peter, die Definition S2000W1_z ist in der Projekt.h definiert und diese ist einmal in meinem C Programmfile includet und einmal auch in der Bibliothek da ich dort auch auf die S2001W1_z zugreift. Aber wie kann ich erreichen, dass die Projekt.h nur einmal definiert wird. Geht das nicht mit #ifndef ... .Das ich irgentwie schreiben wenn die Projekt.h schon einmal includet ist braucht sie nicht mehr includet werden oder so ähnlich. Gruß Tom
h-File: extern int blabla; Und in nur ein einziges c-File !!! int blabla; "einmal in meinem C Programmfile includet und einmal auch in der Bibliothek" ??? Eine Bibliothek kann nichts mehr includen, da sie ja bereits compiliert ist. Peter
@Peter, h-File extern int .....; Im C-File #include <h-File> Um die Bibliothek zu cmpilieren muss ich in der Funktion auch ein #include <h-File> einfügen da diese Funktion auf Variablen des h-Files zugreift. Ich kann dann die Bibliothek erzeugen ohne Fehler. Wenn ich nun diese Funktion in meinen C-File aufrufe habe ich doch das H-File doppelt und daraus kommt der Fehler. Wenn ich die Funktion direkt in meine C Programm einfüge und diese aus der Bibliothek nehme meckert er nicht. Daher hat es etwas damit zu tun, dass das H-File einmen in der Bibliothek und im C-File includet ist. Gruß Tom
"Ich kann dann die Bibliothek erzeugen ohne Fehler." Das ist noch lange kein Beweis, daß sie auch funktioniert. Wenn Du die Sourcen hast, warum willst Du dann erst eine Bibliothek erzeugen ? Das ist doch nur zusätzlich Arbeit und bringt nichts. Ich hab noch nie Bibliotheken gemacht, kann also nicht sagen, was es dabei zu beachten gilt. "Wenn ich nun diese Funktion in meinen C-File aufrufe habe ich doch das H-File doppelt und daraus kommt der Fehler." ??? Ein h-File macht Funktionen und Variablen nur bekannt, damit der Compiler weiß, wie er sie benutzen muß. Es kann nichts doppelt aufgerufen werden, weil in h-Files gar nichts aufgerufen wird. Wenn Du ein File, welches Speicher belegt oder Code erzeugt, als h-File bezeichnest, dann ist das falsch ! Und dann muß gemeckert werden, sobald dieses falsche h-File mehrfach verwendet wird. Peter
Wenn ich in einem Projekt zwei C-Files einfüge und in jedem das gleich H-File include. Ich schreibe und lese Arrays im C-File 1. Im C-File 1 versuche ich dann auf Arrays oder Variablen die ich im C-File 1 auch verwende zuzugreifen dann ist der Fehler der gleiche. Ich denke ich habe einen kleinen Fehler irgentwo indem ich auf mache Varialblen , Array doppelt zugreife und in Jedem C-File das gleiche H-File includiere. Ich denke wir kommen auf diesem Weg nicht weiter. Oder was schlägst Du vor. Ich denke es ist ein Verständigungsproblem meinerseits. Tom
Ich denke mal er linked sowohl die C-Source seiner Library ALS AUCH die Library selber => nimmt mal die Library raus. Gruss
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.