Bonjour,
Voilà, après avoir fait mes marques en Qt, j'aimerais commencer à créer des librairies afin de pouvoir réutiliser facilement mon travail.
Afin de tester, j'ai créé deux projets différents, le premier est un projet de bibliothèque C++, le second un projet ordinaire destiné à utiliser cette bibliothèque.
Pour un premier test, la bibliothèque ne contient qu'une classe, avec une fonction :
Fichier .h
Fichier .cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class QApplication; class TOOLSLIBRARYSHARED_EXPORT ToolsLibrary { public: ToolsLibrary(int n, char* v[]); int handSign(); private: QApplication* application; };
Je compile le projet, et j'obtiens un fichier dll.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include "ToolsLibrary.h" #include <QApplication> #include <QMessageBox> ToolsLibrary::ToolsLibrary(int n, char *v[]) { application = new QApplication(n, v); } int ToolsLibrary::handSign() { QMessageBox mess(QMessageBox::Information, "Message", "Cette fenêtre est affichée par la dll ToolsLibrary.", QMessageBox::Close); mess.setAttribute(Qt::WA_DeleteOnClose); return mess.exec(); }
Ensuite, je passe à mon autre projet, encore plus simple :
Afin de lier ma librairie, j'ai ajouté deux lignes dans le .pro, une pour ajouter à INCLUDEPATH le chemin vers le .h de la librairie, et l'autre pour ajouter directement le fichier .dll à LIBS :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include "ToolsLibrary.h" int main(int argc, char* argv[]) { ToolsLibrary tool(argc, argv); tool.handSign(); return 0; }
Je compile, et jusque là, tout va bien. Seulement lorsque j'exécute, le programme ne se lance même pas, ou du moins ne parvient même pas à entrer dans la fonction main(). J'obtient seulement le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 INCLUDEPATH += \ "E:/Developpement/Tests/DLLProject/toolsLibrary" LIBS += \ "E:/Developpement/Tests/DLLProject/shadow/release/toolsLibrary.dll"
Il me semblait pourtant avoir tout fait correctement. J'ai déjà inclus dans mes projets des librairies externes de la même manière, et je n'ai eu ce problème qu'une seule fois, sans avoir le temps de me pencher dessus avant aujourd'hui.During startup program exited with code 0xc0000135.
Quelqu'un saurait-il me dire si j'ai fait quelque chose de travers ?
P.S. : Les deux projets ont été réalisés en même temps avec le même environnement, sous Windows 7 et compilés avec MinGW.
Partager