Forum: Compiler & IDEs Problem mit Library


von Mario (Gast)


Lesenswert?

Hallo,

ich habe eine Library für einen Display in Atemel Studio 7 geschrieben. 
Diese kompliert auch sauber. Beim Einbinden in mein mainfile kompiliert 
dieses alledings nur, wenn die Memberfunktion im Headerfile und nicht im 
Sourcefile implementiert wird. (Betrifft nur das Hauptprogram, Lib 
selbst kompliert in beiden Szenarien)

* Sourcefile wird von der Library gefunden. (Header ist im Source 
inkludiert)

* includeguards sind vorhanden.

* Headerfile ist unter Project->Projectname 
Properties..->Toolchain->AVR/GNU C++ Compiler->Directories 
bekanntgegeben und ins mainfile includiert.

* Die Library(libxxx.a) ist eingebunden. (auch unter 
Project->Projectname Properties..->Toolchain->AVR/GNU Linker->Libraries)

Die Bibliothek besteht aus einer Basisklasse und einer davon 
abgeleiteten Klasse, wobei das beschriebe Problem sowohl in der Basis- 
als auch in der abgeleiteten Klasse vorhanden ist.

Diese Fehlermeldung wird ausgegeben:
* recipe for target 'TPS_DM_main.elf' failed.
* ld returnde 1 exit status.

Wobei diese meines Wissens nach nur sagen, dass das Program nicht 
kompiliert.

Kompiliert:
Header:
1
class classname : public baseclassname
2
  {
3
  public:
4
  void doSomething() 
5
  {...}
6
};

Kompliert nicht:
Header:
1
class classname : public baseclassname
2
{
3
  public:
4
  void doSomething();
5
};
Source:
1
  void classname::doSomething()
2
  {...}

Danke schon mal im voraus
Lg Mario

von g457 (Gast)


Lesenswert?

> Diese Fehlermeldung wird ausgegeben:
> * recipe for target 'TPS_DM_main.elf' failed.
> * ld returnde 1 exit status.

Und was ist mit den Fehlermeldungen davor? Das wären die relevanten 
welchen. Am besten das ganze build log eines kompletten rebuilds 
vollständig und unverändert zeigen.

> Wobei diese meines Wissens nach nur sagen, dass das Program nicht
> kompiliert.

Doch, es kompiliert, aber es linkt nicht.

von so isses (Gast)


Lesenswert?


von Mario R. (mario_r156)


Lesenswert?

Genau das ist es eben. Es gibt davor keine Fehlermeldungen.

von Mario R. (mario_r156)


Lesenswert?

Und danke für den Link.

von Hans (Gast)


Lesenswert?

Die Meldung sagt, dass es beim Linken ein Problem gab, nicht beim 
Compilieren. Es gibt mit Sicherheit auch eine ausführlichere 
Fehlermeldung irgendwo unter Output bzw. in den Logfiles.

Schätzungsweise steht da etwas à la "undefined referenced to 
classname::doSomething". Das würde bedeuten, dass entweder die statische 
Library nicht ins Hauptprogramm gelinkt wird oder dass die Library die 
Funktion nicht enthält. Schau Dir mal die Aufrufe des Linkers in den 
Logfiles der beiden Projekte (Library und Hauptprogramm) genauer an oder 
poste sie hier.

von Mario R. (mario_r156)


Lesenswert?

Ich habe den Fehler nun gefunden. Danke für den Tipp mit dem Output. 
Eine Funktion war nicht implementiert, welche allerdings in anderen 
verwendet wird.

Danke für die schnellen Antowrten.
Lg Mario.

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
Noch kein Account? Hier anmelden.