Problem mit Library

Gast #4979066
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
Gast #4979076
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.
Gast #4979086
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren