Recent Changes - Search:

Accueil

OpenSSL

SyncML

Apache Portable Runtime

Libxml2

Net-snmp

CUrl

Boost

Perl

ZLib

Samba

VPN

Serveurs de messagerie

edit

APR/APR-iconv

APR.APR-iconv History

Hide minor edits - Show changes to output

September 01, 2007, at 10:38 AM by Arnaud Grandville -
Changed line 1 from:
(:keywords apache portable runtime, APR, iconv, windows:)
to:
(:keywords apache portable runtime, APR, iconv, windows :)
May 20, 2007, at 10:43 PM by Arnaud Grandville -
Added line 1:
(:keywords apache portable runtime, APR, iconv, windows:)
May 14, 2007, at 01:31 PM by Arnaud Grandville -
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 */@@\\


Edit - History - Print - Recent Changes - Search
Page last modified on September 01, 2007, at 10:38 AM