cygwin linker "undefined reference"

freddy23

Grünschnabel
halli hallo

möchte gern unter WinXP meine C++ programme compilieren. dachte mir: am einfachsten ist dann wohl cygwin. gesagt - installiert.

nach ein paar anfänglichen problemen hab ich dann auch den compiler gefunden ( nicht c++, nicht g++ nicht gcc NEIN: c++-2 ist der Befehl)

na wie auch immer.

nun konnte ich also meine .cpp files kompilieren

>> c++-2 -c myclass.cpp -I ./ (wenn jemand weiss wie ich jedes mal das -I ./ verhindern kann)

und raus kommt eine wunderschöne myclass.o datei

nun in meinem main.cpp die myclass.h includen

#include<myclass.h>

und ein objekt von myclass erstellen

myclass* a = new myclass;


und compilieren/linken

>> c++-2 -o main main.cpp myclass.o -I ./

dann kommt der linker mit der fehlermeldung (sinngemäss)

> undefinded reference to function myclass::myclass(void)

soll heissen er findet den konstruktor nicht.
nur die frage WARUM NICHT?
 
Hi,
und wenn dus mal so versuchst?

Code:
cc+-2 -I . myclass.cpp main.cpp -o main

Gruß

RedWing

// edit hast du mal geschaut ob du einen Standard Konstruktor definiert hast?
Sobal du nen eignen Konstruktor definierst erzeugt dir der Compiler keinen
Standard Konstruktor mehr edit//
 
Zuletzt bearbeitet:
Code:
#include<myclass.h>
soll heissen er findet den konstruktor nicht.
nur die frage WARUM NICHT?
Ist die myclass.h wirklich im Include Verzeichnis des Compilers enthalten?

Versuch es jedenfalls 'mal mit:
Code:
#include "myclass.h"
Dann wird im aktuellen Verzeichnis nach der Datei gesucht.
 
Code:
#include "myclass.h"

nicht! aber er findet die .h datei weil sonst tät er sagen:

main.cpp:4: myclass.h: No such file or directory

was er aber NICHT tut!

----------------------------------------
Code:
c++-2 -I . myclass.cpp main.cpp -o main

schaft leider auch keine abhilfe! hatte ich auch schon versucht. die gleiche FM.


---------------------------------
// edit hast du mal geschaut ob du einen Standard Konstruktor definiert hast?
Sobal du nen eignen Konstruktor definierst erzeugt dir der Compiler keinen
Standard Konstruktor mehr edit//

Guter Hinweis! default konstruktor ist aber explizit definiert! und auch sogar noch nen anderer, welcher aber leider auch ne FM erzeugt!

hier noch einmal die FM rauskopiert:
-------
$ g++-2 main.cpp ListEntry.cpp SimpleListEntry.cpp -o mm -lm -I .
/cygdrive/c/DOKUME~1/user/LOKALE~1/Temp/ccDUTn1q.o(.text+0x11c):main.cpp: unde
fined reference to `myclass<int>::myclass(int *)'
collect2: ld returned 1 exit status
-------

so und jetzt kommt ihr wieder :-)
 
Meldet der Linker bei andren Compilern den selben Fehler?

Vielleicht kannst du ja mal die Sourcen mit anhängen, wenn sie nicht so gross sind
:rolleyes: so kann man da nix weiter sagen....

Gruß

RedWing
 
Zurück