Seite 1 von 1

undefined reference..lib wird nicht gelinkt

Verfasst: 29. April 2009 17:00
von rumpelz
Hallo Forum,

ich habe ein Problem beim Linken von statischen Libraries. Im Forum habe ich schon gesucht und die Lösungsvorschläge umgesetzt. Bisher jedoch ohne Erfolg.

Ich habe ein Programm, in das ich eine Header-Datei samt Library einbinden möchte, um die Funktionen zu nutzen.

hier meine cpp-source:

Code: Alles auswählen

#include "Mil.h"

#include "mil_funct.h"
using namespace std;

mil_funct::mil_funct() {
	// TODO constructor stuff
}

mil_funct::~mil_funct() {
	// TODO destructor stuff
}

void mil_funct::init() {
	MIL_ID MilApplication,MilSystem,MilDisplay,MilDigitizer,MilImage;

	/* Allocate defaults. */
	MappAllocDefault(M_SETUP,&MilApplication,&MilSystem,&MilDisplay,&MilDigitizer,&MilImage);
}

QByteArray mil_funct::getLine(int DeviceNo) {
	QByteArray BA;
            // do some stuff
	return BA;
}
Bei der Funktion MappAllocDefault() werden undefined references ausgeworfen.

mil.h verweist auf weitere Header-Dateien, die im selben Verzeichnis liegen (./devlibs).
Ich muss jetzt noch gegen die mil.lib linken. Dazu habe ich folgendes in der .pro-Datei:

Code: Alles auswählen

TEMPLATE = app
TARGET = IProc
DEPENDPATH += 
INCLUDEPATH += 

# Input
HEADERS += mil_funct.h \
    global.h \
FORMS += iproc.ui
SOURCES +=mil_funct.cpp \
    global.cpp \
    main.cpp \
LIBS = -LC:/devlibs \
    -lmil
INCLUDEPATH += C:/devlibs
In den Project Properties ist die mil.lib unter Project Paths --> Libraries als External Library eingebunden und erscheint auch im Projektbaum unter Libraries.

Der Compiler wirft folgenden Fehler aus:
undefined reference to `Funktion1'
undefined reference to `Funktion2'
...
und:
collect2: ld returned 1 exit status
(Was ja auf ein Linker-Problem hindeutet..)

Was fehlt hier noch?

Ich kompiliere mit MingW und QT Eclipse 3.4.1.

Danke Euch!!

Verfasst: 29. April 2009 17:11
von Christian81
mil.lib hört sich sehr nach einer MSVC Import-Library an, nicht nach einer MinGW-Lib... das kann nicht gehen (wenn es nicht gerade eine sehr einfach C-Library ist, und selbst dann ist .lib falsch)