2012-10-18 1 views
0

J'ai créé une DLL simple en qt qui démarre un nouveau thread et gère une requête réseau différente avec QNetworkAccessManager. Travailler avec des requêtes HTTP ordinaires fonctionne bien, mais j'ai eu quelques problèmes en essayant de commencer à utiliser HTTPS à la place.QT: ssl https crashes my dll, throws IniterrorSystem.DllNotFoundException

J'ai installé et configuré OpenSSL qt pour l'utiliser avec: -openssl -IC: \ OpenSSL \ comprennent -LC: \ OpenSSL \ lib

Je peux compiler le dll, mais lorsque je tente d'accéder à la dll de mon application, je reçois une IniterrorSystem.DllNotFoundException. Cette erreur apparaît dès que j'essaie d'utiliser la classe QSslSocket, par exemple j'essaie juste de lancer une variable.

QSslSocket socket; Avec cette initialisation, la DLL se bloque avec l'erreur ci-dessus.

// Prise QSslSocket; La suppression de l'init permettra à la DLL de continuer, mais la requête https ne fonctionne pas et je n'obtiens aucun message d'erreur de QNetworkAccessManager. J'ai essayé de me connecter au signal sslError mais cela n'arrive jamais aussi bien.

J'ai mis les dlls "libeay32.dll", "libssl32.dll" & "ssleay32.dll" dans le même dossier que ma DLL et OpenSSL installé avec succès.

Quelqu'un a-t-il une idée de ce qui me manque?

Répondre

0

Avez-vous installé le Visual C++ Runtime Libraries? OpenSSL dépend de la DLL msvcr sur Windows.

+0

oui je l'ai. La chose est que lorsque je lance le https dans une autre application qui fonctionne de manière similaire à ma DLL, le travail SSL, la seule différence est que j'ai compilé l'application avec MinGW et la DLL est compilée en utilisant msvc2010 x64. le fichier msvcr et il a été trouvé. –

+0

Essayez d'utiliser [Dependency Walker] (http://www.dependencywalker.com/) sur votre DLL pour voir quelles sont les dépendances manquantes. Aussi peut-être que c'est une meilleure idée de construire les deux en utilisant soit MinGW ou MSVC? Vous avez la possibilité de le faire dans QtCreator. –