Comment lier libxml2 avec zlib1 sous Windows?

Je dois comstackr les fichiers binarys libxml2 32 bits et 64 bits pour mon plug – in TeamSpeak 3, car je n’ai pas trouvé de téléchargement dll / lib 64 bits. Lorsque j’utilise mon libxml2.dll compilé comme dépendance dans une application d’invite de commande, cela fonctionne très bien. Cependant, lorsque j’essaie de l’utiliser comme dépendance dans TeamSpeak 3, le programme se bloque immédiatement au lancement. Plus précisément, il se bloque sur cette ligne:

https://github.com/NobleUplift/TeamSpeak3WebsitePreview/blob/master/ts3websitepreview/plugin.c#L148

Voici mon script de lot pour la compilation de libxml2 sous Windows:

@ECHO OFF CALL "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" CD libxml2-2.9.4\win32 nmake clean cscript configure.js comstackr=msvc zlib=true prefix=D:\Repos\libxml2\release include=D:\Repos\libxml2\dll\include lib=D:\Repos\libxml2\dll\bin debug=yes nmake nmake install cd ../.. 

travail libxml2.dll est à gauche, libxml2 cassé est à droite

La libxml2.dll téléchargée à gauche fonctionne. La bibliothèque compilée libxml2.dll est à droite. J’ai essayé d’utiliser l’indicateur zlib et j’ai placé mes en-têtes zlib dans le répertoire include et la dll / lib dans le répertoire lib, mais je ne parviens pas à établir un lien dans la DLL.

Eh bien, je ne sais pas ce qui ne va pas avec le vôtre, mais voici comment nous compilons la version:

 set TARGET_DIR=.\release_vc100 cscript configure.js comstackr=msvc cruntime=/MD debug=no iconv=no legacy=no vcmanifest=no prefix=%TARGET_DIR% || exit /B 1 nmake /f Makefile.msvc clean || exit /B 1 nmake /f Makefile.msvc MSVC_VERSION=vc100 || exit /B 1 nmake /f Makefile.msvc install || exit /B 1 

Je suppose que vous ne voulez pas iconv=no , mais je noterai que j’ai explicitement spécifié /MD pour la libération de lien dynamic msvcrt et debug=no , ainsi que pour passer MSVC_VERSION=vc100 à l’étape de MSVC_VERSION=vc100 .

Je note également que vous transmettez zlib=true lorsque les options semblent prendre yes|no – et je pense vraiment que ‘true’ ne sera pas interprété en tant que 1, mais en tant que 0. (! = yes )

En repensant à la sortie de votre depwalker, je soupçonne en quelque sorte que votre commutateur MSVC_VERSION manquant MSVC_VERSION peut -être un problème, car depwalker répertorie un LIBiconv.dll manquant et que le schéma de nommage (préfixe LIB pour un object dynamic) est un élément * nix pour autant que je sache ceci .)

En ce qui concerne votre erro line – le chargement de la dll a échoué – les deux captures d’écran de depwalker montrent les fichiers DLL de dépendance manquants:

  • Côté gauche: iconv.dll et zlib1.dll sont muissing

  • Côté droit: LIBiconv.dll est manquant. (Mais je pense qu’il n’y a pas de libiconv.dll sur Windows, il doit donc y avoir de mauvais parameters de l’éditeur de liens (??).


Je passe également le makefile de manière explicite, mais il se peut que ce soit juste un reliquat d’une version antérieure où nous avons essayé des makefiles personnalisés.

Note latérale: version de débogage en tant que:

 cscript configure.js comstackr=msvc cruntime=/MDd debug=yes iconv=no legacy=no vcmanifest=no prefix=%TARGET_DIR% || exit /B 1