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

From Apache OpenOffice Wiki
Jump to: navigation, search
m (Un exemple CPP)
Line 172: Line 172:
 
et compiler. Le source doit se compiler sans erreur.  
 
et compiler. Le source doit se compiler sans erreur.  
  
{{Documentation/Note|INFO : Si vous obtenez l'erreur ci-dessous, reportez-vous à la solution 2 postée ci-dessous ! }}
+
{{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 :
 
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 :
Line 268: Line 268:
 
va lancer cet exemple. Cet exemple va seulement ouvrir un fichier OOowriter's (test.sxw) fourni 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.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]
 
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.}}

Revision as of 17:15, 4 July 2018

Template: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 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

Template:Documentation/Linux

Installation sous Windows

Template:Documentation/Windows

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