2017-07-11 3 views
0

Dies ist Cygwin.cygwin dlopen Fehler: Ungültiges oder unvollständiges Multibyte oder breites Zeichen

Ich habe eine gemeinsam genutzte Bibliothek, die einige andere gemeinsame Bibliotheken und einige statische Bibliotheken enthält. Wenn dlopen() aufgerufen wird, wird ein Handle zurückgegeben, aber perror() gibt NULL mit "Ungültiges oder unvollständiges Multibyte oder Breites Zeichen" zurück

Offensichtlich ist etwas in meiner Bibliothek fehlgeschlagen. Wie kann ich das debuggen? Gibt es eine Möglichkeit, dlopen zu bekommen, um mir zu sagen, welche Bibliothek oder Funktion die Fehlerquelle ist?

Antwort

1

Zwei Probleme:

  1. Sie überprüfen errno obwohl die Funktion fehl nicht. Der Wert errno ist nur definiert, wenn die vorherige Funktion fehlgeschlagen ist.

  2. Sie sollten nicht errno verwenden, perror oder strerror wenn dlopen ausfällt. Sie sollten dlerror verwenden.

+0

Vielen Dank! Das musste ich wissen. – garyp

Verwandte Themen