2011-07-06 2 views
1

J'utilise une API de communication avec le serveur distant et elle est uniquement disponible en C. Je ne peux pas le réécrire, parce que c'est un protocole très spécifique, et cela demandera trop d'efforts.Utilisation des sockets winapi avec Qt

L'API fourniIl utilise le schéma standard Winsock2. Donc, pour travailler avec, j'ai ajouté

LIBS += C:\\QtSDK\\mingw\\lib\\libws2_32.a 

au fichier .pro de mon projet.

Toutefois, lorsque le programme accède à une fonction WinSock, même WSAStartup, il se bloque immédiatement avec le message d'erreur SIGILL -- Illegal Instruction. Qu'est-ce que je fais de mal?

+0

-1 pour "il se bloque immédiatement". Pour l'amour de Dieu, s'il vous plaît dites-nous ce que le vrai message d'erreur était! –

+0

SIGILL - Instruction illégale. – Ivan

Répondre

0

Compilez-vous cette API vous-même ou l'avez-vous en tant que paire objet/en-tête? Si vous êtes seul, est-ce avec QtSDK\MinGW? Le pointez-vous aux en-têtes de Winsock de MinGW?

Un bon premier test serait d'essayer de compiler un pilote simple main en utilisant cette bibliothèque, avec QtSDK\MinGW comme autonome, sans Qt's qmake. Une fois que vous faites travail, le portage dans votre projet Qt devrait être facile.

+0

Je l'ajoute en tant que sources + en-têtes, donc il est compilé avec le projet. – Ivan

+0

pouvez-vous le compiler séparément et relier correctement pour le faire fonctionner, sans Qt? –