verwalten von __declspec bei externen Dateien
-
Ich habe ein logisches Problem mit den __declspec Definitionen.
Und zwar habe ich eine Klasse CameraImage die ich in mehreren Projekten (hier mehrere Kameras unterschiedlicher Hersteller) nutzen möchte. Ich habe daher diese Klasse als svn:external in jedem Projekt in /project/src/include/CameraImage importiert.
Jetzt möchte ich aber eine DLL erstellen wo diese Klasse ebenfalls vorkommt. Alle anderen Klassen funktionieren nach dem Prinzip:
#include "QCameraSMXGlobal.h" class QSMXCAMERA_EXPORT QCameraSMX : public QObjectNur in CameraImage kann ich das nicht einbauen, weil die Definition 'QSMXCAMERA_EXPORT' in einem anderen Projekt natürlich anders heißt.
Welche Möglichkeiten bieten sich an das zu lösen? Wenn irgendwie möglich innerhalb von C++ allenfalls der IDE (QtCreator).
-
Jetzt habe ich versucht das mit nur einer header Datei zu lösen, also:
#ifndef CAMERAIMAGE_H_ #define CAMERAIMAGE_H_ // for each project using this file this needs to be defined #ifdef QSMXCAMERA_EXPORT #define QCAMERAIMAGEEXPORT QSMXCAMERA_EXPORT #else #define QCAMERAIMAGEEXPORT #endif class QCAMERAIMAGEEXPORT QCameraImage : public QWidget { Q_OBJECT public: ... };welche nur geladen wir von
#ifndef QCAMERAWIDGET_H #define QCAMERAWIDGET_H // this class is in the project and knows how to define QSMXCAMERA_EXPORT #include "QCameraSMXGlobal.h" #include "QCameraImage.h" class QSMXCAMERA_EXPORT QCameraWidget : public QCameraImage { Q_OBJECT public: explicit QCameraWidget(QWidget *parent = 0); signals: public slots: }; #endif // QCAMERAWIDGET_Hes existiert also keine CameraImage.cpp Datei mehr. Trotzdem wird noch einer QCameraImage.obj gesucht:
LINK : fatal error LNK1181: Eingabedatei "build\debug\QCameraImage.obj"
kann nicht geöffnet werden.worum jetzt das?