hi, ich hab 2 probleme, die mir sehr komisch beim avr studio 6 vorkommen. bei dem einen habe ich versucht eine standard bibliothek einzubinden, die ich selbst erstellt habe, auch im richtigen verzeichnis. gestern hat es noch funktioniert, jetzt nicht mehr. die funktionen, die ich benutzen möchte, werden in der main.c als vorschlag angezeigt, jedoch kommt beim kompilieren immer das "undefined refence to"-problem zu den funktionen. ansich müssen die files ja im explorer sein, aber ich hab extra dafür eine bibliothek aufgemacht, um mit mit <> nichts in den explorer einzufügen und es nicht mehr machen zu müssen. das andere problem ist richtig schräg. in manchen neu erstellten projekten gibts das problem nicht, in anderen schon. ich hab nämlich eine header datei, die ich mit "../blabla/header.h auswähle. wird nicht erkannt, obwohl der weg korrekt ist und bei anderen projekten es so klappt. erst wenn ich den kompletten (c:/blablba) weg in " " reinballer, klappts, das ist voll nervig. wisst ihr rat? und nervt mich nicht mit google, ich hab nix vergleichbares gefunden.
:
Gesperrt durch User
torben schrieb: > jedoch kommt beim kompilieren immer das "undefined refence to"-problem Die undefined reference Fehler kommen vom Linken und nicht vom Compilieren. Hast du auch daran gedacht deine Library dazu zu linken? Nur mit dem include von den Headern ist es nicht getan.
ey erstmal danke für die schnelle antwort. also, ehrlich gesagt, weiß ich nicht so genau, wie ich meine biblio linke. man muss z. b., wenn man <math.h> eintippt ja nix mehr in den explorer reinballern, ne? das gleiche würde ich z.b. mit meinem scheiß code machen. also sozusagen <ordner/blabla/blabla.h> ohne es im explorer zu bomben. einfach den shit #include <ordner/blabla/blabla.h> schreiben und seine scheiß funktionen dann zu haben. hab echt kein bock immer wieder nen ordner da zu klatschen und dort die scheiß header einzubinden und es im explorer auch anzugeben, geht mir voll auf die eier, ey. ehrlich code putzen geht echt auf die nerven man. ich hoffe ihr wisst was ich meine, man. bin aggro grad vom dem scheiß
"reinballern", "bomben", "scheiß". Geh zurück zu den Wachsmalstiften und laß deine Programmierversuche einfach sein. Wenn du die Pubertät erreicht hast, darfst du gherne wiederkommen.
man, is doch wayne oder? hauptsache programmieren, digga, wo ist das problem? scheiß drauf, ich machs auf die idioten art mit scheiß ordnern
wie macht man das, dass man nur noch #include <ordner/header.h> eintippt, um die funktionen, die man geschrieben hat, verwendet? ich bin in den ordner atmel gegagen, toolchain usw. bis halt zu include, wo auch math und so sind und dort dann eben mein zeugs reinkopiert (atmel studio 6.2). und das mit dem verlinken weiß ich nicht wie. wie gesagt, ich kann es natürlich in den solution explorer einfügen, aber gehts auch ohne? ey das mit oben war nur spaß, dachte ihr habt humor. mach keine witze mehr...
im ordner buttom_press z. b. ist eben ein eigener code, um tasten zu entprellen. dort sind header und c file enthalten. das ist der weg dorthin C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\avr\include\button_press und ich kann in einem neuen projekt die funktionen als vorschlag erhalten. nur linken tuts nicht. es muss doch möglich sein, einfach eben #include <button_press/ButtonPress.h> einzutippen, um die funktion Buttonpressed() zu verwenden, ohne dass im solution explorer einzufügen.
ey hilft mir mal bitte, sitze schon lange dran und finde nix. sorry das mit ballern und so, dachte ihr lacht dabei ey. kommt schon, weiß bestimmt doch jemand wie es richtig geht
Das Problem ist, dass deine Library nicht nur aus Headern sondern auch C Dateien besteht und wenn du nur #include <button_press/ButtonPress.h> schreibst dann hast du zwar den Header aber die C-Datei fehlt dir immer noch. Eine Lösung die funktionieren müsste, wäre in deinem Projekt eine C-Datei zu erstellen und dort nur #include <button_press/ButtonPress.c> zu schreiben. Include kopiert ja auch nur den Dateiinhalt der angegebenen Datei an diese Stelle.
:
Bearbeitet durch User
Mach es so, wie man es im AVR-Studio macht. Füge >>alles<< was Du einbinden möchtest über den Solution Explorer zum Projekt hinzu und binde es ein mit: #include "wass_auch_immer.h"
torben schrieb: > es muss doch möglich sein, einfach eben #include > <button_press/ButtonPress.h> einzutippen, um die funktion > Buttonpressed() zu verwenden Nein, das muß nicht möglich sein.
Sebastian V. O. schrieb: > Eine Lösung die funktionieren müsste Das ist keine Lösung, sondern das denkbar dümmste, was man tun kann. Supportest du ihn bei den Problemen, die in zwei, drei Tagen unweigerlich auftreten?
ja vielen dank für die antworten, erstmal ists voll schräg, dass jemand atmel studio 6.2 unter mac hat. wusste nämlich garnicht, dass es fürm mac gibt. hab nämlich windows aufm apple air und zock da atmel studio. das mit existing file kenn ich schon, wollte es aber nicht verwenden, aber trotzdem danke dafür
und sehr großen dank an den kollegen sebastian, hast meinen tag gerettet, dicka. ehrlich, klappt mit deinem vorschlag. boah man, das hat mich echt angekozt
Stefan Rand schrieb: > Supportest du ihn bei den Problemen, die in zwei, drei Tagen > unweigerlich auftreten? Ich wüsste nicht was für Probleme da auftreten sollten. Effektiv kopiert man sich damit eine C-Datei ins Projektverzeichnis. Solange man nicht versucht mehrere C-Dateien in eine Datei zu packen sehe ich kein Problem auch wenn das nicht gängige Praxis ist. Eine andere Lösung die dem TO eventuell gefallen könnte: Wenn die Library die du einbinden möchtest von dir ist oder es dir nichts ausmacht die Library eines Anderen umzuschreiben, dann kannst du die C-Dateien loswerden indem du alle Funktionen als inline deklarierst und die Funktionsdefinitionen in den Header packst. Das geht aber auch nur wenn die Library keine globalen Variablen benutzt.
streitet euch nicht freunde, klatsche es in die header, geht nämlich auch. wäre nicht darauf gekommen, dass es so nicht geht, mit methodenköpfe in der header und den verfi**ten funktionen in c datei
Sebastian V. O. schrieb: > Ich wüsste nicht was für Probleme da auftreten sollten. Wenn du keine Ahnung hast, dann bist du vielleicht nicht der richtige, um "Lösungen" anzubieten, nicht wahr?
dicka, seid nicht so hater mäßig drauf. sebastian hat meinen tag gerettet, ehrlich, wäre sonst echt jetzt deprimiert. klatsche die funktionen in die header, jo.
Stefan Rand schrieb: > Sebastian V. O. schrieb: >> Ich wüsste nicht was für Probleme da auftreten sollten. > > Wenn du keine Ahnung hast, dann bist du vielleicht nicht der richtige, > um "Lösungen" anzubieten, nicht wahr? Kläre mich auf. Zeig mir ein Beispiel, bei dem mein Vorschlag Probleme macht.
ey, jooo ey, voll das krasse programmier battle, ey. jojo voll spannend muss ich sagen. ja stefan, wieso gehts nicht, häh?
Sebastian V. O. schrieb: > Kläre mich auf. Zeig mir ein Beispiel, bei dem mein Vorschlag Probleme > macht. Vier Wochen später nimmt er die C-Datei doch in das Projekt auf. Was "multiple definitions" sind, weiß er nicht so richtig, und wenn er versucht, dem nachzugehen, dann ist der Compiler offensichtlich fehlerhaft, weil er eine Definition in myLibrary.c, Zeile 307, und eine weitere Definition in myLibrary.c, Zeile 307 anmeckert. Und das kann ja nicht sein.
ey, stefan, danke für deine vorsorge, ey. ihr seid schon korrekt hier, schätze aber trotzdem, dass ihr alles alte säcke seid
Wenn man das macht ist das natürlich blöd gelaufen, hat aber nicht direkt mit meinem Vorschlag zu tun. Genauso gut könnte man die Library zweimal ins Projekte kopieren. Die Fehlermeldungen die man dann kriegt sind genauso "kompliziert" wie wenn man in einem Header eine Funktion definiert und in zwei C-Dateien nutzt und dieser Fehler ist vermutlich jedem C Programmierer schonmal passiert. Ein bisschen mitdenken muss man natürlich schon.
Sebastian V. O. schrieb: > zweimal ins Projekte kopieren. Die Fehlermeldungen die man dann kriegt > sind genauso "kompliziert" wie wenn man in einem Header eine Funktion > definiert und in zwei C-Dateien nutzt und dieser Fehler ist vermutlich Nein, die IDE wird dir zeigen, da´ß es zwei verschiedene Dateien mit selbem Namen sind. Das ist qualitativ in der Hitze der Fehlersuche etwas ganz anderes als die angenommene Fehlermeldung in meinem Beispiel.
wie kann ich das loswerden? ich hatte 2 dateien aus dem gleichen ordner included. und jetzt krieg ich das problem nicht weg
Ich glaube nicht, daß wir hier weiter "torbens" Lernverweigerung folgen müssen.