In DLL-Header weiteren Header einbinden [gelöst]
Verfasst: 2. Februar 2010 17:54
Hi Leute,
ich habe mir eine Matrizenklasse geschrieben, die ich per EXPORT_DLL als Library erzeuge, um sie in mein Programm einzubinden. Soweit funktioniert das auch schon gut.
Das Problem ist aber, dass die Matrizen-Headerdatei eine Vektorklasse included. Wenn ich dann in meiner Anwendung auf die Vektoren zugreifen will (indem ich zum Beispiel auf eine Spalte der Matrix zugreife) kennt er die Definition für die Zugriffsoperatoren nicht. Das bedeutet, dass die Matrixklasse zwar in der DLL vorhanden ist, die Definition der Vektorklasse allerdings nicht.
Leider klappt es nicht, einfach vor die Vektorklasse EXPORT_DLL hinzuschreiben. Dann meckert der Compiler eine "invalid function declaration" an der Stelle an.
Hier ein kurzes Beispiel, wie die Headerdatei der Matrixklasse aussieht:
[code]
#ifndef MATRIX_H
#define MATRIX_H
#ifdef MATRIXLIB_SSE2
#define EXPORT_DLL Q_DECL_EXPORT
#else
#define EXPORT_DLL
#endif
#include "colvector.h" // Hier wird die Vektorklasse eingebunden
//...
class EXPORT_DLL Matrix
{
//...
}
[/code]
Die Vektorklasse (colvector.h) ist wie jede andere Klasse definiert:
[code]
#ifndef COLVECTOR_H
#define COLVECTOR_H
// weitere includes
class ColVector
{
//...
}
[/code]
Wie kriege ich es nun hin, dass in der Matrizenlibrary auch die Definitionen für die Vektorklasse mit hinein gelinkt werden, ohne aus beiden eine Datei zu machen (sind jeweils 1000 Zeilen Code!) und ohne 2 Libraries daraus zu machen?
Danke,
Kay
ich habe mir eine Matrizenklasse geschrieben, die ich per EXPORT_DLL als Library erzeuge, um sie in mein Programm einzubinden. Soweit funktioniert das auch schon gut.
Das Problem ist aber, dass die Matrizen-Headerdatei eine Vektorklasse included. Wenn ich dann in meiner Anwendung auf die Vektoren zugreifen will (indem ich zum Beispiel auf eine Spalte der Matrix zugreife) kennt er die Definition für die Zugriffsoperatoren nicht. Das bedeutet, dass die Matrixklasse zwar in der DLL vorhanden ist, die Definition der Vektorklasse allerdings nicht.
Leider klappt es nicht, einfach vor die Vektorklasse EXPORT_DLL hinzuschreiben. Dann meckert der Compiler eine "invalid function declaration" an der Stelle an.
Hier ein kurzes Beispiel, wie die Headerdatei der Matrixklasse aussieht:
[code]
#ifndef MATRIX_H
#define MATRIX_H
#ifdef MATRIXLIB_SSE2
#define EXPORT_DLL Q_DECL_EXPORT
#else
#define EXPORT_DLL
#endif
#include "colvector.h" // Hier wird die Vektorklasse eingebunden
//...
class EXPORT_DLL Matrix
{
//...
}
[/code]
Die Vektorklasse (colvector.h) ist wie jede andere Klasse definiert:
[code]
#ifndef COLVECTOR_H
#define COLVECTOR_H
// weitere includes
class ColVector
{
//...
}
[/code]
Wie kriege ich es nun hin, dass in der Matrizenlibrary auch die Definitionen für die Vektorklasse mit hinein gelinkt werden, ohne aus beiden eine Datei zu machen (sind jeweils 1000 Zeilen Code!) und ohne 2 Libraries daraus zu machen?
Danke,
Kay