J'ai une bibliothèque qui utilise QwtPlotMagnifier, entre autres classes Qwt. J'ai décidé de sous-classer QwtPlotMagnifier afin que je puisse émettre un signal lorsque l'intrigue est redimensionnée. La bibliothèque (mylib.lib) se compile, mais l'application qui l'utilise se plaint maintenant d'un external non résolu lié à la sortie moc de QwtPlotMagnifier.Non résolue externe lors du sous-classement qwt class
Je lie qwt statiquement; donc l'exigence d'avoir la directive QWT_DLL du préprocesseur dans la bibliothèque de plus bas niveau ne s'applique pas ici.
est ici l'erreur (la sous-classe est appelée PlotMagnifier):
mylib.lib(moc_PlotMagnifier.obj) : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QwtPlotMagnifier::staticMetaObject" ([email protected]@@[email protected]@B)
Rien de spécial au sujet de la déclaration de la sous-classe:
#pragma once
#include "qwt_plot_magnifier.h"
/**
subclass of QwtPlotMagnifier to provide a signal when zooming is complete
*/
class PlotMagnifier : public QwtPlotMagnifier
{
Q_OBJECT
public:
explicit PlotMagnifier(QWidget *w);
virtual ~PlotMagnifier();
signals:
void rescaled();
protected:
virtual void rescale(double factor);
};
Je suis sur Visual Studio 2013 FWIW. Mon application inclut toujours qwtd.lib comme elle l'a toujours fait. Cela doit être une erreur stupide de ma part .. kickstart mon cerveau s'il vous plaît, quelqu'un!
Je pensais avoir abordé ces deux points ci-dessus - J'utilise MSVC pour compiler, donc je n'ai pas de CONFIG à configurer (et j'utilise déjà QWT avec succès). Aussi, je lie qwt statiquement, donc je n'ai pas besoin de QWT_DLL; en fait, si je définis cela, je reçois des erreurs partout – mike
Je le reprends! Après le nettoyage et la reconstruction, je peux compiler très bien avec QWT_DLL. Cela résout le problème, merci beaucoup! – mike
Je ne comprends pas la downvote ici ... cela semble correct. – Bebs