Difference between revisions of "FR/Documentation/Installation du SDK"

From Apache OpenOffice Wiki
Jump to: navigation, search
m (New page: {{Documentation/Banner}} Que ce soit pour Linux ou Windows chacun des points suivants sont très importants si vous voulez réussir à construire des composants en C++ : * Vous devez avoir...)
 
 
(26 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Documentation/Banner}}
+
{{DocBanner}}
 
Que ce soit pour Linux ou Windows chacun des points suivants sont très importants si vous voulez réussir à construire des composants en C++ :
 
Que ce soit pour Linux ou Windows chacun des points suivants sont très importants si vous voulez réussir à construire des composants en C++ :
 
* Vous devez avoir OpenOffice.org 1.1.0 ou plus installé (le SDK ne marchera pas sans)
 
* Vous devez avoir OpenOffice.org 1.1.0 ou plus installé (le SDK ne marchera pas sans)
Line 5: Line 5:
  
 
==Installation sous LINUX==
 
==Installation sous LINUX==
Le texte ci-dessous décrit l'installation de  SDK 1.1.0 pour OpenOffice.org1.1.0
+
{{Lin|
 +
Le texte ci-dessous décrit l'installation de  SDK 1.1.0 pour OpenOffice.org1.1.0 et versions ultérieures.
  
Le SDK (Software Development Kit), kit de développement marche en supplément d'une version d' Openoffice.org déjà existante en utilisant les mêmes librairies. Le SDK requiert donc une installation d' Openoffice.org .
+
Le SDK (Software Development Kit), kit de développement marche en supplément d'une version d' Openoffice.org déjà existante en utilisant les mêmes librairies. Le SDK requiert donc une installation d'Openoffice.org.
Même si vous ne penser pas utiliser du Java il est très recommandé d'installer le JDK (1.4.1_01 ou plus pour OOo 1.1 SDK)
+
Même si vous ne pensez pas utiliser du Java il est très recommandé d'installer le JDK (1.4.1_01 ou plus pour OOo 1.1 SDK)  
 
On aura aussi besoin d'un compilateur C++ (Le 3.0.1 ou plus). GNU peut faire l'affaire (3.79.1 ou plus), c'est aussi essentiel.
 
On aura aussi besoin d'un compilateur C++ (Le 3.0.1 ou plus). GNU peut faire l'affaire (3.79.1 ou plus), c'est aussi essentiel.
 
Quand vous êtes prêt, lancez :
 
Quand vous êtes prêt, lancez :
Line 14: Line 15:
 
tar xzvf Ooo_1.1.0_LinuxIntel_sdk.tar.gz
 
tar xzvf Ooo_1.1.0_LinuxIntel_sdk.tar.gz
 
</pre>
 
</pre>
et aller dans le nouveau répertoire crée (dans cet exemple OpenOffice.org1.1_SDK), et lancer la configuration du script, lequel vous demandera les chemins des répertoires appropriés. Nous en donnons ici quelques-uns parmi d'autres :
+
et allez dans le nouveau répertoire créé (dans cet exemple OpenOffice.org1.1_SDK), et lancez la configuration du script, lequel vous demandera les chemins des répertoires appropriés. Nous en donnons ici quelques-uns parmi d'autres :
Où est installé votre OpenOffice.org ? (Pour moi /usr/lib/openoffice : noté <OOo> dans tout le texte qui suit)
+
* Où est installé votre OpenOffice.org ? (Pour moi /usr/lib/openoffice : noté <OOo> dans tout le texte qui suit)
Où est installé votre Java SDK? (Pour moi /usr/java/j2sdk1.4.2_04)
+
* Où est installé votre Java SDK? (Pour moi /usr/java/j2sdk1.4.2_04)
 +
 
 +
Pour une installation SDK avec une version postérieure à 2.0 on lance aussi le scipt setsdkenv_unix script mais celui_ci demande un peu plus d'informations. Nous montrons le résultat obtenu à l'écran :
 +
<pre>
 +
************************************************************************
 +
*
 +
* SDK environment is prepared for Linux
 +
*
 +
* SDK = /home/smoutou/openoffice.org2.0_sdk
 +
* Office = /opt/openoffice.org2.0
 +
* URE =
 +
* Make = /usr/bin
 +
* Zip = /usr/bin
 +
* C++ Compiler = /usr/bin
 +
* Java = /usr/java/j2sdk1.4.2_04
 +
* Special Output directory = /home/smoutou
 +
* Auto deployment = YES
 +
*
 +
************************************************************************
 +
 +
</pre>
  
 
Maintenant vous êtes prêt à utiliser le SDK. Chaque utilisation nécessitera le lancement du script “setsdkenv_unix” pour positionner les variables d'environnement.
 
Maintenant vous êtes prêt à utiliser le SDK. Chaque utilisation nécessitera le lancement du script “setsdkenv_unix” pour positionner les variables d'environnement.
  
A partir de maintenant, nous noterons toujours le répertoire d'installation du SDK comme : <OpenOffice.org1.1_SDK>. S'il vous plaît, ne le confondez pas avec <OOo> qui dénote le répertoire de openoffice.org /program/ .
+
A partir de maintenant, nous noterons toujours le répertoire d'installation du SDK comme : <OpenOffice.org1.1_SDK>. S'il vous plaît, ne le confondez pas avec <OOo> qui dénote le répertoire de openoffice.org/program/.
  
Vous pouvez trouver un complément sur ce chapitre à : <OpenOffice.org1.1_SDK>/docs/install.html
+
Vous pouvez trouver un complément utile à ce chapitre dans le répertoire : <OpenOffice.org1.1_SDK>/docs/install.html
 +
}}
  
 
==Installation sous Windows==
 
==Installation sous Windows==
 
+
{{Win|
 
Vous avez besoin d'un compilateur autre que “Visual Studio family” de Microsoft. La première chose après avoir installé le SDK c'est de lancer le fichier batch de configuration, "WindowsNT.bat" et de préparer tous les dossiers nécessaires, pour une utilisation correcte.
 
Vous avez besoin d'un compilateur autre que “Visual Studio family” de Microsoft. La première chose après avoir installé le SDK c'est de lancer le fichier batch de configuration, "WindowsNT.bat" et de préparer tous les dossiers nécessaires, pour une utilisation correcte.
Si tout à été fait, alors vous avez déjà fini de tout installer. Il y a par contre encore une chose importante à savoir : chaque fois que vous voulez désirez compiler  votre propre code ou un exemple du SDK vous devez lancer le fichier batch “setsdkenv_Windows.bat” depuis une fenêtre de commande. Sa bannière de titre devrait être maintenant: "Shell prepared for SDK". Bon codage.....
+
Si tout à été fait, alors vous avez déjà fini de tout installer. Il y a par contre encore une chose importante à savoir : chaque fois que vous désirez compiler  votre propre code ou un exemple du SDK vous devez lancer le fichier batch “setsdkenv_Windows.bat” depuis une fenêtre de commande. Sa bannière de titre devrait être maintenant: "Shell prepared for SDK". Bon codage.....
 +
}}
 +
 
 +
== Installation avec le MS Visual C++ Toolkit 2003 (libre) ==
 +
 
 +
* J'ai d'abord installé DevCpp pour avoir un make capable d'exécuter un makefile.
 +
* J'ai téléchargé VC++ 2003 [http://www.microsoft.com/downloads/details.aspx?FamilyID=272be09d-40bb-49fd-9cb0-4bfa122fa91b&displaylang=en ici]
 +
 
 +
et je l'ai installé.
 +
{{Warn|La version 2003 semble maintenant indisponible. Il vous faudra vous rabattre sur la version 2005}}
 +
 
 +
Je lance alors C:\openoffice\OpenOffice.org2.0_SDK\configureWindowsNT.bat
 +
qui me pose un certain nombre de questions :
 +
<pre>
 +
set OO_SDK_HOME=C:\openoffice\OpenOffice.org2.0_SDK
 +
set OFFICE_HOME=C:\Program Files\OpenOffice.org 2.0
 +
set OO_SDK_MAKE_HOME=C:\Dev-C++\Bin
 +
set OO_SDK_CPP_HOME=C:\Program Files\Microsoft Visual C++ Toolkit 2003\Bin
 +
set OO_SDK_JAVA_HOME=C:\Program Files\Java\jdk1.5.0_03
 +
</pre>
 +
 
 +
Si j'ai correctement répondu aux questions je suis maintenant en mesure de lancer setsdkenv_windows.bat chaque fois que j'ai besoin de positionner les variables d'environnement du SDK.
 +
 
 +
J'essaie ensuite de compiler un exemple du SDK. Cela ne peut se faire sans changement du code source correspondant :
 +
C:\openoffice\OpenOffice.org2.0_SDK\examples\DevelopersGuide\ProfUNO\CppBinding\office_connect.cxx
 +
 
 +
pour changer le port d'écoute d'OpenOffice.org (voir listing ci-dessosu)
 +
 
 +
Commençons par modifier le makefile en ajoutant :
 +
 
 +
<pre>
 +
CC_INCLUDES = -I"C:\Program Files\Microsoft Visual C++ Toolkit 2003\include" \
 +
              -I"C:\openoffice\OpenOffice.org2.0_SDK\include"
 +
</pre>
 +
 
 +
pour les répertoires d'inclusions ainsi que pour les répertoires des librairies :
 +
 
 +
<pre>
 +
$(OUT_BIN)/%$(EXE_EXT) : $(SAMPLE_OBJ_OUT)/%.$(OBJ_EXT)
 +
-$(MKDIR) $(subst /,$(PS),$(@D))
 +
-$(MKDIR) $(subst /,$(PS),$(SAMPLE_GEN_OUT))
 +
ifeq "$(OS)" "WIN"
 +
$(LINK) $(EXE_LINK_FLAGS) /OUT:$@ /MAP:$(SAMPLE_GEN_OUT)/$(subst $(EXE_EXT),.map,$(@F)) \
 +
$< $(CPPUHELPERLIB) $(CPPULIB) $(SALHELPERLIB) $(SALLIB) $(STLPORTLIB)\
 +
      "C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib\libcp.lib" \
 +
      "C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib\libc.lib" \
 +
      "C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib\oldnames.lib" \
 +
"C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib\kernel32.lib"
 +
else
 +
$(LINK) $(EXE_LINK_FLAGS) $(LINK_LIBS) -o $@ $< \
 +
  $(CPPUHELPERLIB) $(CPPULIB) $(SALHELPERLIB) $(SALLIB) $(STLPORTLIB) $(STDC++LIB)
 +
endif
 +
</pre>
 +
Je suppose qu'il y a une méthode plus directe pour inclure ces librairies et les fichiers d'inclusions mais mes connaissances Windows ne sont pas assez avancées pour cela.
 +
{{Warn|Il semblerait donc que le SDK sous Windows n'est pas prêt à l'emploi comme il l'est sous Linux !}}
 +
 
 +
J'ai trouvé une solution aux problèmes évoqués trois semaines plus tard. Mon problème venait en fait d'un bug dans
 +
setsdkenv_windows.bat. Une petite correction dans ce fichier setsdkenv_windows.bat rendait possible d'éviter les modifications des makefiles ce qui aurait été très contraignant. Mettre :
 +
 
 +
<pre>
 +
REM Set environment for C++ compiler tools, if necessary.
 +
if defined OO_SDK_CPP_HOME call "C:\Program Files\Microsoft Visual C++ Toolkit 2003\VCVARS32.bat"
 +
</pre>
 +
 
 +
au lieu de :
 +
<pre>
 +
REM Set environment for C++ compiler tools, if necessary.
 +
if defined OO_SDK_CPP_HOME call "%OO_SDK_CPP_HOME%\VCVARS32.bat"
 +
</pre>
 +
Je pense que
 +
<pre>
 +
%OO_SDK_CPP_HOME%\..\VCVARS32.bat
 +
</pre>
 +
devrait fonctionner aussi (mais je ne l'ai pas testé). Vous pouvez aussi déplacer vcvars32.bat dans %OO_SDK_CPP_HOME% ("C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin" pour moi).
 +
 
 +
== Autres descriptions complémentaires d'installation sous Windows ==
 +
 
 +
On peut touver dans le [http://www.oooforum.org/forum/viewtopic.phtml?t=23772 OOoForum] un message intitulé "Guide for develop OpenOffice apps with VC++ .net" (by [[CppSDKAuthors|LarsB]])
 +
 
 +
1.Télécharger et installer OpenOffice.
 +
 
 +
2.Télécharger et intaller le SDK OpenOffice
 +
 
 +
3.Créer un nouveau répertoire inludecpp dans <oo_sdk_path>
 +
 
 +
4.Ouvrir une console Dos et aller dans le répertoire <oo_sdk_path>\windows\bin
 +
 
 +
4.1 lancer cppumaker avec les paramètres suivants
 +
<pre>
 +
cppumaker -BUCR -O <oo_sdk_path>\includecpp <office_programm_dir>\types.rdb
 +
</pre>
 +
ou mieux pour les versions récentes :
 +
<pre>
 +
cppumaker -Gc -BUCR -O<includes_path> <ooffice_path>\URE\misc\types.rdb <ooffice_path>\Basis\program\offapi.rdb
 +
</pre>
 +
 
 +
(Attention: si vous recevez une erreur d'initialisation, copier types.rdb dans le répertoire <oo_sdk_path>\windows\bin !)
 +
 
 +
Après cette opération tous les fichiers hpp et hdl seront créés dans le répertoire <oo_sdk_path>\includecpp
 +
 
 +
5.Ouvrir Visual Studio et créer une application console Win32.Appliquer ensuite les changements suivants à votre projet.
 +
 
 +
5.1. Tools ->Options->Projects->VC++ Directories -> Include Files
 +
Ajouter \include directory and <oo_sdk_path>\includecpp
 +
 
 +
5.2. Tools ->Options->Projects->VC++ Directories -> Library files
 +
Ajouter <oo_sdk_path>\windows\lib directory
 +
 
 +
5.3. Tools ->Options->Projects->VC++ Directories -> Executable files
 +
Ajouter <office_programm_dir>\program directory (location where you installed the version of the OpenOffice)
 +
 +
5.4 Ouvrir le "Project Settings"
 +
 
 +
5.4.1 Changer la Configuration à toutes All Configurations (la combobox dans le coin gauche de la fenêtre)
 +
 
 +
5.4.2 Ajouter les libraries additionnelles
 +
 
 +
Properties->Linker->ComandLine dans les  "Additional Options" mettre les fichiers librairies
 +
isal.lib icppu.lib icppuhelper.lib isal.lib isalhelper.lib ireg.lib irmcxt.lib stlport_vc71.lib
 +
 
 +
6.(exemple) Ajouter le DocumentLoader.cxx des exemples cpp du sdk
 +
et compiler. Le source doit se compiler sans erreur.
 +
 
 +
{{Note|INFO : Si vous obtenez l'erreur ci-dessous, reportez-vous à la solution 2 postée ci-dessous ! }}
 +
 
 +
Jusqu'à maintenant, avec les étapes ci-dessus, j'obtiens l'erreur suivante quand j'essaie l'exemple du DocumentLoader. L'erreur est déclenchée quand l'exécutable arrive sur la ligne suivante :
 +
 
 +
<source lang="cpp">
 +
 
 +
Reference< XSimpleRegistry > xSimpleRegistry( ::cppu::createSimpleRegistry() );
 +
</source>
 +
 
 +
avec l'erreur montrée ci-dessous :
 +
 
 +
<pre>
 +
Error:
 +
Window title: Microsoft Visual C++ Debug Library
 +
Headline: Debug Error
 +
Msg: This application has requested the Runtime to terminate it in an usual way.
 +
Please contact the support team for more information.
 +
</pre>
 +
 
 +
Si quelqu'un a rencontré et résolu ce type d'erreur ce serait bien qu'il poste une solution pour disposer ainsi d'un guide complet pour OpenOffice avec VC++ .NET
 +
 
 +
Regards
 +
[[CppSDKAuthors|Lars]]
 +
 
 +
[[CppSDKAuthors|François]] a remis à jour la procédure complète d'installation avec un certain nombre de remarques : 
 +
En suivant toutes les étapes ci-dessus j'ai (_francois_) rencontré deux problèmes
 +
 
 +
* le premier à l'étape 4.4.2
 +
Mais ici je suppose que c'est parce que la procédure était rédigée pour la version 2 du SDK et moi j'utilise la version 1.1. La librairie stlport_vc71.lib que vous devez inclure est distribuée avec le SDK 2.0 et donc pour la version 1.1 prendre stlport_vc7.lib au lieu de stlport_vc71.lib
 +
 
 +
* second problème : après avoir compilé avec succès l'exemple DocumentLoader dans Visual Studio, j'ai obtenu l'erreur suivante :
 +
<pre>
 +
Window title: Microsoft Visual C++ Debug Libary
 +
Headline: Debug Error
 +
Msg: This application has requested the Runtime to terminate it in an usual way.
 +
Please contact the support team for more information.
 +
</pre>
 +
 
 +
Après débogage dans le visual studio j'ai trouvé que la ligne suivante en était responsable :
 +
<pre>
 +
xSimpleRegistry->open( OUString( RTL_CONSTASCII_USTRINGPARAM("DocumentLoader.rdb") ), sal_True, sal_False );
 +
</pre>
 +
 
 +
Le fichier DocumentLoader.rdb manquait... J'ai noté que si je compilais avec les makefiles l'exemple du DocumentLoader le fichier DocumentLoader.rdb était généré. J'ai donc plongé dans le makefile pour isoler la ligne responsable de cette génération du DocumentLoader.rdb dans mon répertoire Debug (ou n'importe où ailleurs, où est votre DocumentLoader.exe réalisé par Visual Studio) :
 +
 
 +
<pre>
 +
regmerge c:\travail\DocumentLoader\debug\DocumentLoader.rdb / "C:\ooo\office\program\types.rdb"
 +
 
 +
regcomp -register -r c:\travail\DocumentLoader\debug\DocumentLoader.rdb -c connector.uno.dll
 +
regcomp -register -r c:\travail\DocumentLoader\debug\DocumentLoader.rdb -c remotebridge.uno.dll
 +
regcomp -register -r c:\travail\DocumentLoader\debug\DocumentLoader.rdb -c bridgefac.uno.dll
 +
regcomp -register -r c:\travail\DocumentLoader\debug\DocumentLoader.rdb -c uuresolver.uno.dll
 +
</pre>
 +
 
 +
J'ai lancé toutes les lignes ci-dessus dans mon shell et cela a fonctionné, j'avais mon DocumentLoader.rdb dans mon répertoire Debug 
 +
 
 +
J'ai lancé mon fichier exe et cela a marché...
  
 
==Outils de développement pour le SDK==
 
==Outils de développement pour le SDK==
Il y a plusieurs outils de développement fournis avec le SDK: idlc, cppumaker, javamaker, rdbmaker, pkgchk, regcomp, regmerge, regview, xml2cmp, uno, et autodoc. Vous pouvez trouver une petite documentation sur ces outils à : <OpenOffice.org1.1_SDK>/docs/tools.html  
+
Il y a plusieurs exécutables fournis avec le SDK:  
 +
*idlc,  
 +
*cppumaker,  
 +
*javamaker,  
 +
*rdbmaker,  
 +
*pkgchk remplacé maintenant par unopkg (fourni avec OpenOffice.org et non pas avec le SDK)
 +
*regcomp,  
 +
*regmerge,  
 +
*regview,  
 +
*xml2cmp,  
 +
*uno, et  
 +
*autodoc.  
 +
 
 +
Vous pouvez trouver une petite documentation sur ces outils à : <OOo_SDK>/docs/tools.html
 +
et dans le [[Documentation/DevGuide/WritingUNO/Required_Files|Developer's Guide]].
  
 
==Un exemple CPP==
 
==Un exemple CPP==
Line 37: Line 252:
 
./setsdkenv_unix
 
./setsdkenv_unix
 
</pre>
 
</pre>
dans votre shell et ensuite:  
+
dans votre shell et ensuite :  
 
<pre>
 
<pre>
 
<Ooo>/program/soffice "-accept=socket host=localhost,port=8100;urp;StarOffice.ServiceManager"
 
<Ooo>/program/soffice "-accept=socket host=localhost,port=8100;urp;StarOffice.ServiceManager"
 
</pre>
 
</pre>
 
Maintenant Openoffice.org est configuré pour accepter les connexions UNO à travers le réseau.
 
Maintenant Openoffice.org est configuré pour accepter les connexions UNO à travers le réseau.
Nous somme maintenant prêt à compiler notre premier exemple et à vérifier s'il fonctionne correctement. Pour cela nous allons dans le répertoire:  
+
Nous sommes maintenant prêt à compiler notre premier exemple et à vérifier s'il fonctionne correctement. Pour cela nous allons dans le répertoire :  
 
<pre>
 
<pre>
 
cd <OpenOffice.org1.1_SDK>/examples/cpp/DocumentLoader
 
cd <OpenOffice.org1.1_SDK>/examples/cpp/DocumentLoader
 
make
 
make
 
</pre>
 
</pre>
cette dernière commande va compiler l'exemple et ensuite:
+
cette dernière commande va compiler l'exemple et ensuite :
 
<pre>
 
<pre>
 
make DocumentLoader.run
 
make DocumentLoader.run
 
</pre>
 
</pre>
va lancer cet exemple. Cet exemple va seulement ouvrir un fichier OOowriter's (test.sxw) fournit avec le SDK .
+
va lancer cet exemple. Cet exemple va seulement ouvrir un fichier OOowriter's (test.sxw) fourni avec le SDK.
  
{{Documentation/Note|
+
{{Note|
Un autre moyen de configurer OpenOffice en tant que serveur réseaux est d'utiliser la macro OOoBasic de Danny Brewer : UnoConnectionListener_2004-03-12.zip trouvable à l'adresse [http://www.ooomacros.org/dev.php#100069]
+
Un autre moyen de configurer OpenOffice.org en tant que serveur réseaux est d'utiliser la macro OOoBasic de Danny Brewer : UnoConnectionListener_2004-03-12.zip trouvable à l'adresse [http://www.ooomacros.org/dev.php#100069]
 
C'est un document OooDraw avec des boutons, très facile à utiliser.}}
 
C'est un document OooDraw avec des boutons, très facile à utiliser.}}
  
Il faut garder à l'esprit que le  moyen le plus simple de construire les exemples du SDK est d'utiliser les makefile fournis. Lorsqu'on est débutant avec le SDK, on sous-estime des étapes importantes dans la construction et l'exécution des fichiers binaires, par exemple l'étape d'enregistrement discutée au chapitre 6. Je peux estimer avoir compris quelquechose quand je suis capable de le construire à partir de rien (juste des connaissances) mais dans le cas du SDK cela pourrait prendre beaucoup de temps. Ainsi je peux vous donner un conseil, si vous voulez commencer un projet essayez de partir d'un exemple qui fonctionne du SDK.
+
Il faut garder à l'esprit que le  moyen le plus simple de construire les exemples du SDK est d'utiliser les makefile fournis. Lorsqu'on est débutant avec le SDK, on sous-estime des étapes importantes dans la construction et l'exécution des fichiers binaires, par exemple l'étape d'enregistrement discutée au chapitre 6. Je peux estimer avoir compris quelque chose quand je suis capable de le construire à partir de rien (juste des connaissances) mais dans le cas du SDK cela pourrait prendre beaucoup de temps. Ainsi je peux vous donner un conseil, si vous voulez commencer un projet, essayez de partir d'un exemple qui fonctionne du SDK.
 +
 
 +
== Retour à la page d'accueil==
 +
 
 +
[[Documentation/FR/Cpp_Guide|Page d'accueil du développement C++ à l'aide du SDK]]
 +
 
 +
= Voir aussi =
 +
* [[Uno/Cpp/Tutorials/Introduction_to_Cpp_Uno|Apprendre C++ et UNO (en anglais)]]
 +
* Writing a Program to Control OpenOffice.org, by Franco Pingiori — [http://www.linuxjournal.com/article/8550 Part 1] and [http://www.linuxjournal.com/article/8608 Part 2], Linux Journal
 +
 
 +
[[Category:FR/Cpp_Guide]]

Latest revision as of 08:29, 13 July 2018

doc OOo

Que ce soit pour Linux ou Windows chacun des points suivants sont très importants si vous voulez réussir à construire des composants en C++ :

  • Vous devez avoir OpenOffice.org 1.1.0 ou plus installé (le SDK ne marchera pas sans)
  • Vous devez installer le SDK dans un répertoire autre que celui de l'application OOo .

Installation sous LINUX

Documentation linux.png

Le texte ci-dessous décrit l'installation de SDK 1.1.0 pour OpenOffice.org1.1.0 et versions ultérieures.

Le SDK (Software Development Kit), kit de développement marche en supplément d'une version d' Openoffice.org déjà existante en utilisant les mêmes librairies. Le SDK requiert donc une installation d'Openoffice.org. Même si vous ne pensez pas utiliser du Java il est très recommandé d'installer le JDK (1.4.1_01 ou plus pour OOo 1.1 SDK) On aura aussi besoin d'un compilateur C++ (Le 3.0.1 ou plus). GNU peut faire l'affaire (3.79.1 ou plus), c'est aussi essentiel. Quand vous êtes prêt, lancez :

tar xzvf Ooo_1.1.0_LinuxIntel_sdk.tar.gz

et allez dans le nouveau répertoire créé (dans cet exemple OpenOffice.org1.1_SDK), et lancez la configuration du script, lequel vous demandera les chemins des répertoires appropriés. Nous en donnons ici quelques-uns parmi d'autres :

  • Où est installé votre OpenOffice.org ? (Pour moi /usr/lib/openoffice : noté <OOo> dans tout le texte qui suit)
  • Où est installé votre Java SDK? (Pour moi /usr/java/j2sdk1.4.2_04)

Pour une installation SDK avec une version postérieure à 2.0 on lance aussi le scipt setsdkenv_unix script mais celui_ci demande un peu plus d'informations. Nous montrons le résultat obtenu à l'écran :

 ************************************************************************
 *
 * SDK environment is prepared for Linux
 *
 * SDK = /home/smoutou/openoffice.org2.0_sdk
 * Office = /opt/openoffice.org2.0
 * URE =
 * Make = /usr/bin
 * Zip = /usr/bin
 * C++ Compiler = /usr/bin
 * Java = /usr/java/j2sdk1.4.2_04
 * Special Output directory = /home/smoutou
 * Auto deployment = YES
 *
 ************************************************************************
 

Maintenant vous êtes prêt à utiliser le SDK. Chaque utilisation nécessitera le lancement du script “setsdkenv_unix” pour positionner les variables d'environnement.

A partir de maintenant, nous noterons toujours le répertoire d'installation du SDK comme : <OpenOffice.org1.1_SDK>. S'il vous plaît, ne le confondez pas avec <OOo> qui dénote le répertoire de openoffice.org/program/.

Vous pouvez trouver un complément utile à ce chapitre dans le répertoire : <OpenOffice.org1.1_SDK>/docs/install.html

Installation sous Windows

Documentation windows.png

Vous avez besoin d'un compilateur autre que “Visual Studio family” de Microsoft. La première chose après avoir installé le SDK c'est de lancer le fichier batch de configuration, "WindowsNT.bat" et de préparer tous les dossiers nécessaires, pour une utilisation correcte. Si tout à été fait, alors vous avez déjà fini de tout installer. Il y a par contre encore une chose importante à savoir : chaque fois que vous désirez compiler votre propre code ou un exemple du SDK vous devez lancer le fichier batch “setsdkenv_Windows.bat” depuis une fenêtre de commande. Sa bannière de titre devrait être maintenant: "Shell prepared for SDK". Bon codage.....

Installation avec le MS Visual C++ Toolkit 2003 (libre)

  • J'ai d'abord installé DevCpp pour avoir un make capable d'exécuter un makefile.
  • J'ai téléchargé VC++ 2003 ici

et je l'ai installé.

Documentation caution.png La version 2003 semble maintenant indisponible. Il vous faudra vous rabattre sur la version 2005

Je lance alors C:\openoffice\OpenOffice.org2.0_SDK\configureWindowsNT.bat qui me pose un certain nombre de questions :

set OO_SDK_HOME=C:\openoffice\OpenOffice.org2.0_SDK
set OFFICE_HOME=C:\Program Files\OpenOffice.org 2.0
set OO_SDK_MAKE_HOME=C:\Dev-C++\Bin
set OO_SDK_CPP_HOME=C:\Program Files\Microsoft Visual C++ Toolkit 2003\Bin
set OO_SDK_JAVA_HOME=C:\Program Files\Java\jdk1.5.0_03

Si j'ai correctement répondu aux questions je suis maintenant en mesure de lancer setsdkenv_windows.bat chaque fois que j'ai besoin de positionner les variables d'environnement du SDK.

J'essaie ensuite de compiler un exemple du SDK. Cela ne peut se faire sans changement du code source correspondant : C:\openoffice\OpenOffice.org2.0_SDK\examples\DevelopersGuide\ProfUNO\CppBinding\office_connect.cxx

pour changer le port d'écoute d'OpenOffice.org (voir listing ci-dessosu)

Commençons par modifier le makefile en ajoutant :

CC_INCLUDES = -I"C:\Program Files\Microsoft Visual C++ Toolkit 2003\include" \
              -I"C:\openoffice\OpenOffice.org2.0_SDK\include"

pour les répertoires d'inclusions ainsi que pour les répertoires des librairies :

$(OUT_BIN)/%$(EXE_EXT) : $(SAMPLE_OBJ_OUT)/%.$(OBJ_EXT)
	-$(MKDIR) $(subst /,$(PS),$(@D))
	-$(MKDIR) $(subst /,$(PS),$(SAMPLE_GEN_OUT))
ifeq "$(OS)" "WIN"
	$(LINK) $(EXE_LINK_FLAGS) /OUT:$@ /MAP:$(SAMPLE_GEN_OUT)/$(subst $(EXE_EXT),.map,$(@F)) \
	 $< $(CPPUHELPERLIB) $(CPPULIB) $(SALHELPERLIB) $(SALLIB) $(STLPORTLIB)\
       "C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib\libcp.lib" \
       "C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib\libc.lib" \
       "C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib\oldnames.lib" \
	 "C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib\kernel32.lib" 
else
	$(LINK) $(EXE_LINK_FLAGS) $(LINK_LIBS) -o $@ $< \
	  $(CPPUHELPERLIB) $(CPPULIB) $(SALHELPERLIB) $(SALLIB) $(STLPORTLIB) $(STDC++LIB)
endif

Je suppose qu'il y a une méthode plus directe pour inclure ces librairies et les fichiers d'inclusions mais mes connaissances Windows ne sont pas assez avancées pour cela.

Documentation caution.png Il semblerait donc que le SDK sous Windows n'est pas prêt à l'emploi comme il l'est sous Linux !

J'ai trouvé une solution aux problèmes évoqués trois semaines plus tard. Mon problème venait en fait d'un bug dans setsdkenv_windows.bat. Une petite correction dans ce fichier setsdkenv_windows.bat rendait possible d'éviter les modifications des makefiles ce qui aurait été très contraignant. Mettre :

REM Set environment for C++ compiler tools, if necessary.
if defined OO_SDK_CPP_HOME call "C:\Program Files\Microsoft Visual C++ Toolkit 2003\VCVARS32.bat"

au lieu de :

REM Set environment for C++ compiler tools, if necessary.
if defined OO_SDK_CPP_HOME call "%OO_SDK_CPP_HOME%\VCVARS32.bat"

Je pense que

 
%OO_SDK_CPP_HOME%\..\VCVARS32.bat

devrait fonctionner aussi (mais je ne l'ai pas testé). Vous pouvez aussi déplacer vcvars32.bat dans %OO_SDK_CPP_HOME% ("C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin" pour moi).

Autres descriptions complémentaires d'installation sous Windows

On peut touver dans le OOoForum un message intitulé "Guide for develop OpenOffice apps with VC++ .net" (by LarsB)

1.Télécharger et installer OpenOffice.

2.Télécharger et intaller le SDK OpenOffice

3.Créer un nouveau répertoire inludecpp dans <oo_sdk_path>

4.Ouvrir une console Dos et aller dans le répertoire <oo_sdk_path>\windows\bin

4.1 lancer cppumaker avec les paramètres suivants

cppumaker -BUCR -O <oo_sdk_path>\includecpp <office_programm_dir>\types.rdb 

ou mieux pour les versions récentes :

cppumaker -Gc -BUCR -O<includes_path> <ooffice_path>\URE\misc\types.rdb <ooffice_path>\Basis\program\offapi.rdb

(Attention: si vous recevez une erreur d'initialisation, copier types.rdb dans le répertoire <oo_sdk_path>\windows\bin !)

Après cette opération tous les fichiers hpp et hdl seront créés dans le répertoire <oo_sdk_path>\includecpp

5.Ouvrir Visual Studio et créer une application console Win32.Appliquer ensuite les changements suivants à votre projet.

5.1. Tools ->Options->Projects->VC++ Directories -> Include Files Ajouter \include directory and <oo_sdk_path>\includecpp

5.2. Tools ->Options->Projects->VC++ Directories -> Library files Ajouter <oo_sdk_path>\windows\lib directory

5.3. Tools ->Options->Projects->VC++ Directories -> Executable files Ajouter <office_programm_dir>\program directory (location where you installed the version of the OpenOffice)

5.4 Ouvrir le "Project Settings"

5.4.1 Changer la Configuration à toutes All Configurations (la combobox dans le coin gauche de la fenêtre)

5.4.2 Ajouter les libraries additionnelles

Properties->Linker->ComandLine dans les "Additional Options" mettre les fichiers librairies isal.lib icppu.lib icppuhelper.lib isal.lib isalhelper.lib ireg.lib irmcxt.lib stlport_vc71.lib

6.(exemple) Ajouter le DocumentLoader.cxx des exemples cpp du sdk et compiler. Le source doit se compiler sans erreur.

Documentation note.png INFO : Si vous obtenez l'erreur ci-dessous, reportez-vous à la solution 2 postée ci-dessous !

Jusqu'à maintenant, avec les étapes ci-dessus, j'obtiens l'erreur suivante quand j'essaie l'exemple du DocumentLoader. L'erreur est déclenchée quand l'exécutable arrive sur la ligne suivante :

Reference< XSimpleRegistry > xSimpleRegistry( ::cppu::createSimpleRegistry() );

avec l'erreur montrée ci-dessous :

Error: 
Window title: Microsoft Visual C++ Debug Library 
Headline: Debug Error 
Msg: This application has requested the Runtime to terminate it in an usual way. 
Please contact the support team for more information.

Si quelqu'un a rencontré et résolu ce type d'erreur ce serait bien qu'il poste une solution pour disposer ainsi d'un guide complet pour OpenOffice avec VC++ .NET

Regards Lars

François a remis à jour la procédure complète d'installation avec un certain nombre de remarques : En suivant toutes les étapes ci-dessus j'ai (_francois_) rencontré deux problèmes

  • le premier à l'étape 4.4.2

Mais ici je suppose que c'est parce que la procédure était rédigée pour la version 2 du SDK et moi j'utilise la version 1.1. La librairie stlport_vc71.lib que vous devez inclure est distribuée avec le SDK 2.0 et donc pour la version 1.1 prendre stlport_vc7.lib au lieu de stlport_vc71.lib

  • second problème : après avoir compilé avec succès l'exemple DocumentLoader dans Visual Studio, j'ai obtenu l'erreur suivante :
Window title: Microsoft Visual C++ Debug Libary 
Headline: Debug Error 
Msg: This application has requested the Runtime to terminate it in an usual way. 
Please contact the support team for more information.

Après débogage dans le visual studio j'ai trouvé que la ligne suivante en était responsable :

 
xSimpleRegistry->open( OUString( RTL_CONSTASCII_USTRINGPARAM("DocumentLoader.rdb") ), sal_True, sal_False );

Le fichier DocumentLoader.rdb manquait... J'ai noté que si je compilais avec les makefiles l'exemple du DocumentLoader le fichier DocumentLoader.rdb était généré. J'ai donc plongé dans le makefile pour isoler la ligne responsable de cette génération du DocumentLoader.rdb dans mon répertoire Debug (ou n'importe où ailleurs, où est votre DocumentLoader.exe réalisé par Visual Studio) :

regmerge c:\travail\DocumentLoader\debug\DocumentLoader.rdb / "C:\ooo\office\program\types.rdb" 

regcomp -register -r c:\travail\DocumentLoader\debug\DocumentLoader.rdb -c connector.uno.dll 
regcomp -register -r c:\travail\DocumentLoader\debug\DocumentLoader.rdb -c remotebridge.uno.dll 
regcomp -register -r c:\travail\DocumentLoader\debug\DocumentLoader.rdb -c bridgefac.uno.dll 
regcomp -register -r c:\travail\DocumentLoader\debug\DocumentLoader.rdb -c uuresolver.uno.dll 

J'ai lancé toutes les lignes ci-dessus dans mon shell et cela a fonctionné, j'avais mon DocumentLoader.rdb dans mon répertoire Debug

J'ai lancé mon fichier exe et cela a marché...

Outils de développement pour le SDK

Il y a plusieurs exécutables fournis avec le SDK:

  • idlc,
  • cppumaker,
  • javamaker,
  • rdbmaker,
  • pkgchk remplacé maintenant par unopkg (fourni avec OpenOffice.org et non pas avec le SDK)
  • regcomp,
  • regmerge,
  • regview,
  • xml2cmp,
  • uno, et
  • autodoc.

Vous pouvez trouver une petite documentation sur ces outils à : <OOo_SDK>/docs/tools.html et dans le Developer's Guide.

Un exemple CPP

Si vous voulez vérifier les exemples CPP , vous devez d'abord lancer :

./setsdkenv_unix

dans votre shell et ensuite :

<Ooo>/program/soffice "-accept=socket host=localhost,port=8100;urp;StarOffice.ServiceManager"

Maintenant Openoffice.org est configuré pour accepter les connexions UNO à travers le réseau. Nous sommes maintenant prêt à compiler notre premier exemple et à vérifier s'il fonctionne correctement. Pour cela nous allons dans le répertoire :

cd <OpenOffice.org1.1_SDK>/examples/cpp/DocumentLoader
make

cette dernière commande va compiler l'exemple et ensuite :

make DocumentLoader.run

va lancer cet exemple. Cet exemple va seulement ouvrir un fichier OOowriter's (test.sxw) fourni avec le SDK.

Documentation note.png

Un autre moyen de configurer OpenOffice.org en tant que serveur réseaux est d'utiliser la macro OOoBasic de Danny Brewer : UnoConnectionListener_2004-03-12.zip trouvable à l'adresse [1] C'est un document OooDraw avec des boutons, très facile à utiliser.

Il faut garder à l'esprit que le moyen le plus simple de construire les exemples du SDK est d'utiliser les makefile fournis. Lorsqu'on est débutant avec le SDK, on sous-estime des étapes importantes dans la construction et l'exécution des fichiers binaires, par exemple l'étape d'enregistrement discutée au chapitre 6. Je peux estimer avoir compris quelque chose quand je suis capable de le construire à partir de rien (juste des connaissances) mais dans le cas du SDK cela pourrait prendre beaucoup de temps. Ainsi je peux vous donner un conseil, si vous voulez commencer un projet, essayez de partir d'un exemple qui fonctionne du SDK.

Retour à la page d'accueil

Page d'accueil du développement C++ à l'aide du SDK

Voir aussi

Personal tools