Je suis nouveau à qt et avoir une erreur que je suis incapable de réparer.
J'ai une bouquet de fichiers de bibliothèque statique (VS2005) ( donc j'ai ajouté Jusque-là, tout semble bien, je peux utiliser la classe et QT IDE montrer toute la méthode et tout . Donc, pour moi, il semble que cela ait trouvé le fichier .h. P> maintenant j'ai ajouté le J'ai également essayé ce qui suit: p> voici le contenu de mon Ils me donnent tous les mêmes erreurs: (et je reçois la même chose même si je n'inclut pas le peut-il aider s'il vous plaît? p> p> .lib code>). Et je teste si elles fonctionnent bien avec QT. J'ai donc pris la bibliothèque la plus simple que j'ai. (Appelé
messagebuffer code>). P>
messagebuffer.h code> au
main.cpp code> et ajouté l'emplacement de ces fichiers dans le
includepath code> du
.pro code>. p>
MessageBuffer.lib code> (VS2005 / Builée de débogage) dans le
.pro code > Comme ceci: p>
.pro code> fichier: p>
.lib code>) p>
3 Réponses :
Je suppose que vous avez utilisé la bibliothèque MessageBuffer dans une autre application avec des problèmes. L'erreur semble que cela ne puisse pas trouver la bibliothèque ou la classe MessageBuffer n'est pas exportée.
Avez-vous essayé de mettre -l à l'avant de la bibliothèque dans le fichier PRO? P>
win32:LIBS += -lE:/SharedLibrary/lib/MessageBufferd.lib
d est le nom réel, d est ajouté pour la version de débogage de la .lib.
@XCIMO a du sens ... voulait juste vérifier
Je ne sais pas si la classe MessageBuffer est exportée. Je n'ai pas de mot clé "exportation" dans la classe MessageBuffer, car j'ai pu utiliser cette bibliothèque dans de nombreux autres projets Visual Studio C ++. Une bibliothèque statique a-t-elle besoin d'une exportation? Ou peut-être que c'est quelque chose qui a besoin de mingw? Merci pour ton aide.
Pour être honnête, je ne sais pas si cela en a besoin ... mais l'erreur semble impliquer qu'elles ne peuvent pas être trouvées.
Pensez-vous que cela ne trouve pas le .h ou le .lib?
Essayez d'utiliser la commande "nm" fourni avec Mingw pour voir ce qui est exporté par votre lib.
Si vous ne l'avez pas encore essayé, cliquez sur A -L à l'avant de la bibliothèque dans le fichier Pro
basé sur la question Utilisez des bibliothèques compilées avec Visual Studio dans une application compilée par G ++ (Mingw) et le Forum MSDN POST Je ne peux pas mélanger VC & GCC Il n'apparaît pas que vous pouvez lier une application GCC avec des bibliothèques compilées Visual C ++. P >
La solution serait de tout recompiler avec le même compilateur. P>
C'est en fait ce que j'allais poster, j'ai trouvé ceci: ces bibliothèques, telles que de nombreux autres packages de développement de Windows précompilés tels que la bibliothèque client MySQL, ont été compilés avec MS Visual C ++ (MSVC). MSVC et Mingw, nous avons découvert, utilisez différentes conventions de dénomination pour les fonctions STDCALL. MSVC les exporte comme _name @ ordinal, mais MINGW les exporte comme nom. En conséquence, la construction MINGW a échoué avec des erreurs de liaison «Indiffines définies» lors de l'appel des fonctions STDCALL exportées depuis la bibliothèque MSVC.
Veuillez consulter ici les solutions: blog.outofhanwell .COM / 2006/05/01 / ...
La FAQ MINGW discute de ce problème et offre une solution: p>
cela n'a pas fonctionné. Nous avons finalement supprimé les ordonnances des noms de fonction, ce qui le faisait compiler. Mais le programme ne serait pas exécuté car il ne pouvait pas trouver les fonctions liées dans la DLL. Enfin, après consultation de la documentation MSDN pour les fichiers de définition, nous avons modifié les instructions de construction: p>
Cela a fonctionné! Pour compiler le projet, vous devez simplement: P>
pris de: http://blog.outofhanwell.com.com / 2006/05/01 / Liaison-MSVC-Bibliothèques-avec-MingW-Projects / P>
J'essaie actuellement du plug-in Visual Studio pour Qt, d'essayer de construire des applications QT et d'utiliser le compilateur VS (et utilisez My MSVC .Libs).
Pourriez-vous poster le fichier PRO que vous utilisez?
Il suffit d'ajouter le contenu du fichier Pro dans le message d'origine.