Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1420 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Visual C++ / Qt / OpenGL] LNK2001 : unresolved external symbol

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Visual C++ / Qt / OpenGL] LNK2001 : unresolved external symbol

n°1974066
CrazyBritn​ey
Posté le 15-03-2010 à 22:38:11  profilanswer
 

Bonjour,
J'utilise le framework Qt 4.6.1 avec Microsoft Visual C++ 2008.
J'ai déjà créé des programmes utilisant Qt qui marchaient très bien.
A présent je veux créer une fenêtre dans laquelle je fais de la 3D en OpenGL.
J'ai donc une classe rubikGl (oui, c'est un rubik's cube) qui dérive de QGLWidget.
Cependant lorsque je tente de compiler j'obtiens le log suivant :

1>mainWindow.cpp
 
1> link /LIBPATH:"c:\Qt\4.6.1\lib" /NOLOGO /DEBUG /MANIFEST /MANIFESTFILE:"debug\RubikQt.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /OUT:debug\RubikQt.exe @C:\Users\Antoine\AppData\Local\Temp\nmEFFE.tmp  
 
1>mainWindow.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QGLWidget::QGLWidget(class QWidget *,class QGLWidget const *,class QFlags<enum Qt::WindowType> )" (__imp_??0QGLWidget@@QAE@PAVQWidget@@PBV0@V?$QFlags@W4WindowType@Qt@@@@@Z) referenced in function "public: __thiscall rubikGL::rubikGL(class QWidget *)" (??0rubikGL@@QAE@PAVQWidget@@@Z)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "protected: virtual bool __thiscall QGLWidget::event(class QEvent *)" (?event@QGLWidget@@MAE_NPAVQEvent@@@Z)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QGLWidget::paintEvent(class QPaintEvent *)" (?paintEvent@QGLWidget@@MAEXPAVQPaintEvent@@@Z)
 
1>NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\link.EXE"' : return code '0x460'
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QGLWidget::resizeEvent(class QResizeEvent *)" (?resizeEvent@QGLWidget@@MAEXPAVQResizeEvent@@@Z)
 
1>Stop.
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall QGLWidget::updateGL(void)" (?updateGL@QGLWidget@@UAEXXZ)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall QGLWidget::updateOverlayGL(void)" (?updateOverlayGL@QGLWidget@@UAEXXZ)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall rubikGL::initializeGL(void)" (?initializeGL@rubikGL@@UAEXXZ)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QGLWidget::resizeGL(int,int)" (?resizeGL@QGLWidget@@MAEXHH@Z)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall rubikGL::paintGL(void)" (?paintGL@rubikGL@@UAEXXZ)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QGLWidget::initializeOverlayGL(void)" (?initializeOverlayGL@QGLWidget@@MAEXXZ)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QGLWidget::resizeOverlayGL(int,int)" (?resizeOverlayGL@QGLWidget@@MAEXHH@Z)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QGLWidget::paintOverlayGL(void)" (?paintOverlayGL@QGLWidget@@MAEXXZ)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QGLWidget::glInit(void)" (?glInit@QGLWidget@@MAEXXZ)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall QGLWidget::glDraw(void)" (?glDraw@QGLWidget@@MAEXXZ)
 
1>mainWindow.obj : error LNK2001: unresolved external symbol "public: virtual class QPaintEngine * __thiscall QGLWidget::paintEngine(void)const " (?paintEngine@QGLWidget@@UBEPAVQPaintEngine@@XZ)
 
1>mainWindow.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QGLWidget::~QGLWidget(void)" (__imp_??1QGLWidget@@UAE@XZ) referenced in function "public: virtual __thiscall rubikGL::~rubikGL(void)" (??1rubikGL@@UAE@XZ)
 
1>moc_rubikGL.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual void * __thiscall QGLWidget::qt_metacast(char const *)" (__imp_?qt_metacast@QGLWidget@@UAEPAXPBD@Z) referenced in function "public: virtual void * __thiscall rubikGL::qt_metacast(char const *)" (?qt_metacast@rubikGL@@UAEPAXPBD@Z)
 
1>moc_rubikGL.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual int __thiscall QGLWidget::qt_metacall(enum QMetaObject::Call,int,void * *)" (__imp_?qt_metacall@QGLWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z) referenced in function "public: virtual int __thiscall rubikGL::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@rubikGL@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
 
1>moc_rubikGL.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static struct QMetaObject const QGLWidget::staticMetaObject" (__imp_?staticMetaObject@QGLWidget@@2UQMetaObject@@B)
 
1>debug\RubikQt.exe : fatal error LNK1120: 19 unresolved externals


 
Le .h de ma classe rubikGl :

Code :
  1. class rubikGL : public QGLWidget
  2. {
  3. Q_OBJECT
  4. public:
  5.      rubikGL(QWidget *parent)
  6.          : QGLWidget(parent) {}
  7.  void initializeGL();
  8.      void paintGL();
  9. };


 
L'utilisation de cette classe dans mainWindow.cpp :
 

Code :
  1. rubikGL *rubiksCube = new rubikGL(this);
  2. layout = new QGridLayout(this);
  3. layout->addWidget(rubiksCube, 1,1, 8,1);


 
 
En cherchant sur internet j'ai déjà trouvé ceci :
- Apparemment c'est un problème de Meta Object, il faut "faire tourner moc" sur la classe qui dérive de QGLWidget. Je n'ai pas trop compris ce qu'était ce moc, mais je compile grâce à la commande "qmake -project & qmake & nmake" et j'ai également lu que cette commande gère toute seule tout ce qui est "moc"
- Ajouter qt += opengl dans le fichier .pro -> n'a rien changé
- Ajouter Q_OBJECT dans le .h -> déjà fait (cf code ci-dessus)
 
 
Je suis donc un peu perdu, j'espère que je vous ai bien exposé mon problème et que vous saurez me débloquer car c'est assez frustrant !
 
D'avance merci!

mood
Publicité
Posté le 15-03-2010 à 22:38:11  profilanswer
 

n°1974278
Amonchakai
Posté le 16-03-2010 à 20:35:08  profilanswer
 

Juste pour etre sur... Quand tu as mis "qt += opengl" tu as bien retire le  "qmake -project" dans les commandes a executer par VS lors de la compilation?

n°1974450
CrazyBritn​ey
Posté le 17-03-2010 à 10:34:34  profilanswer
 

Non je ne l'avais pas fait, je l'ai remarqué après avoir posté et ça a résolu pas mal de soucis!
Merci =)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Visual C++ / Qt / OpenGL] LNK2001 : unresolved external symbol

 

Sujets relatifs
Ce qui est déjà disponible de C++0XA SUPPRIMER MERCI
Probleme variable fichier [ langage C ][C] Petites questions (débutant)
SDL + CRequêtes HTTP synchrones avec Qt
Ajouter les classes Qt de Network dans Visual Studio 
Plus de sujets relatifs à : [Visual C++ / Qt / OpenGL] LNK2001 : unresolved external symbol


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR