OpenSSL VPN Serveurs de messagerie |
APR/APR-iconvAPR.APR-iconv HistoryShow minor edits - Show changes to output Added lines 1-141:
Parmi les différentes librairies de [[http://apr.apache.org/|Apache Portable Runtime]], l'une est particulièrement intéressante car elle concerne la convertion d'une multitude de tables de caractères.\\ Voici la procédure de compilation sous Windows de cette librairie.\\ \\ !!!{+1. Téléchargement et décompression des codes sources+} @@apr-1.2.8-win32-src.zip@@\\ @@apr-iconv-1.1.1-win32-src.zip@@\\ @@apr-util-1.2.8-win32-src.zip@@\\ \\ Ces trois archives doivent être décompressées dans un unique répertoire commun, chaque sous-répertoire doit ensuite être renommé :\\ - \apr-1.2.8 en \apr, \\ - \apr-iconv-1.1.1 en \apr-iconv et,\\ - \apr-util-1.2.8 en \apr-util.\\ En effet, des chemins relatifs sont indiqués dans leurs headers et les headers ne tiennent pas compte des versions. \\ \\ !!!{+2. Compilation des librairies+} Activer votre environnement de compilation avec vcvars32.bat\\ depuis le répertoire \apr lancer >>teal background-color:#f0f0f0 padding=5px font-family=monospace<< NMAKE /f "apr.mak" CFG="apr - Win32 Debug"\\ NMAKE /f "apr.mak" CFG="apr - Win32 Release"\\ NMAKE /f "libapr.mak" CFG="libapr - Win32 Debug"\\ NMAKE /f "libapr.mak" CFG="libapr - Win32 Release" >><< depuis le répertoire \apr-iconv lancer >>teal background-color:#f0f0f0 padding=5px font-family=monospace<< NMAKE /f "apriconv.mak" CFG="apriconv - Win32 Debug"\\ NMAKE /f "apriconv.mak" CFG="apriconv - Win32 Release"\\ NMAKE /f "libapriconv.mak" CFG="libapriconv - Win32 Debug"\\ NMAKE /f "libapriconv.mak" CFG="libapriconv - Win32 Release" >><< \\ depuis le répertoire \apr-util lancer >>teal background-color:#f0f0f0 padding=5px font-family=monospace<< NMAKE /f "aprutil.mak" CFG="aprutil - Win32 Release"\\ NMAKE /f "aprutil.mak" CFG="aprutil - Win32 Debug" >><< \\ \\ !!!{+3. Compilation des ''character encoding scheme''+} depuis le répertoire \apr-iconv\ces >>teal background-color:#f0f0f0 padding=5px font-family=monospace<< nmake /f Makefile.win BUILD_MODE="debug" BIND_MODE="shared"\\ nmake /f Makefile.win BUILD_MODE="debug" BIND_MODE="static"\\ nmake /f Makefile.win BUILD_MODE="release" BIND_MODE="shared"\\ nmake /f Makefile.win BUILD_MODE="release" BIND_MODE="static" >><< \\ \\ !!!{+4. Compilation des ''coded character set''+} depuis le répertoire \apr-iconv\ccs >>teal background-color:#f0f0f0 padding=5px font-family=monospace<< nmake /f Makefile.win BUILD_MODE="release" BIND_MODE="shared"\\ nmake /f Makefile.win BUILD_MODE="release" BIND_MODE="static"\\ nmake /f Makefile.win BUILD_MODE="debug" BIND_MODE="shared"\\ nmake /f Makefile.win BUILD_MODE="debug" BIND_MODE="static" >><< \\ \\ !!!{+5. Utilisation+} En plus des fichiers .H, .LIB et .DLL habituels, lors de la compilation des CCS et CES un répertoire \iconv rempli de fichier .so a été créé.\\ Chaque fichier, indique les deux sens de convertion d'une table locale avec une table [[http://fr.wikipedia.org/wiki/ISO/CEI_10646|UCS-4]]. La convertion d'une chaîne de caractère locale en UTF-8 se fait donc par un passage intermédiaire en UCS-4.\\ Une nouvelle variable d'environnement APR_ICONV_PATH doit être définie et doit pointer vers le répertoire \iconv contenant les fichiers .so.\\ \\ \\ !!!{+6. Exemple+} (:source lang=C :) #include "stdafx.h" #include "apr_iconv.h" #include "apr_pools.h" int _tmain(int argc, _TCHAR* argv[]) { apr_pool_t *pool; apr_status_t rv; char szIn[]="cérémonie"; char szOut[50]; apr_iconv_t handle; ZeroMemory(szOut,50); rv = apr_initialize(); if (rv != APR_SUCCESS) { assert(0); return -1; } apr_pool_create(&pool, NULL); char from[]="iso-8859-1"; char to[]="UTF-8"; apr_size_t translated,lengthIn,lenghtOut; lengthIn=strlen(szIn); lenghtOut=49; rv=apr_iconv_open(to, from, pool, &handle); const char* pszIn = szIn; char* pszOut = szOut; apr_iconv(handle,&pszIn,&lengthIn,&pszOut,&lenghtOut,&translated); apr_iconv_close(handle,pool); apr_pool_destroy(pool); printf("%s", szOut); return 0; } (:sourcend:) Ce qui transformera ''cérémonie'' en ''cérémonie''. %left bgcolor=#ffffcc border='1px dotted red' padding=5px%Si vous rencnontrez des problèmes de compilation de ce type:\\ @@test1 error LNK2019: symbole externe non résolu "__declspec(dllimport) int __stdcall apr_iconv(void *,char const * *,unsigned int *,char * *,unsigned int *,unsigned int *)" (__imp_?apr_iconvYGHPAXPAPBDPAIPAPAD22@Z) référencé dans la fonction _main@@\\ Alors, pour corriger cela, il vous faudra modifier apr_iconv.h pour ajouter devant la ligne contenant @@/* __BEGIN_DECLS */@@ \\ @@#ifdef __cplusplus@@\\ @@extern "C" {@@\\ @@#endif@@\\ et \\ @@#ifdef __cplusplus@@\\ @@}@@\\ @@#endif@@\\ avant la ligne @@/* __END_DECLS */@@\\ |