2017-07-11 5 views
0

Ceci est cygwin.erreur cygwin dlopen: multibyte non valide ou incomplet ou caractère large

J'ai une bibliothèque partagée qui contient d'autres bibliothèques partagées et certaines bibliothèques statiques. Lorsque dlopen() est appelée, une poignée est retournée, mais perror() retourne NULL avec « multi-octets invalide ou incomplète ou caractère large »

De toute évidence quelque chose dans ma bibliothèque échoue. Comment puis-je déboguer cela? Yat-il un moyen d'obtenir dlopen pour me dire quelle bibliothèque incluse ou fonction est en faute?

Répondre

1

Deux problèmes:

  1. Vous vérifiez errno même si la fonction n'a pas échoué. La valeur de errno n'est définie que si la fonction précédente a échoué.

  2. Vous ne devriez pas utiliser errno, perror ou strerror quand dlopen échoue. Vous devriez utiliser dlerror.

+0

Merci! C'est ce que j'avais besoin de savoir. – garyp