2009-08-28 6 views
3

J'ai un plugin Eclipse RCP qui nécessite une DLL.Quelle est la méthode préférée pour charger une DLL sur un plugin Eclipse RCP?

Quelle est la meilleure pratique recommandée pour ajouter la référence DLL au MANIFEST? Où doit se trouver la DLL, quel est le nom de répertoire recommandé?

J'ai lu des pratiques contradictoires. Certains vous demandent de créer un dossier avec l'architecture et le type de processeur, certains demandent de définir des filtres de plate-forme sur le manifeste ....

+0

Je serais intéressé par toute documentation que vous avez vu disant de faire autrement, pouvez-vous poster des références –

Répondre

2

Le meilleur moyen d'une application Eclipse est d'utiliser des fragments de plug-in. Un projet éclipse standard (avec dlls) aura plusieurs fragments pour toutes les plates-formes supportées. Les fragments ne seront activés que si les plates-formes cibles sont spécifiées dans le filtre de la plateforme.

De la documentation Eclipse (fournie avec une éclipse installation standard)

Un filtre de plate-forme est une chaîne LDAP valide qui doit être évaluée à true dans un système de fonctionnement pour le plug-in de fonctionner. Par exemple, le filtre suivant indique que le plug-in est conçu pour s'exécuter uniquement sur les plates-formes avec un système de fenêtrage win32: Eclipse-PlatformFilter: (ws = win32). Si un utilisateur tente d'exécuter Eclipse sur une plate-forme qui ne répond pas à cette exigence, le plug-in sera ignoré silencieusement par le moteur d'exécution.

+0

Je suggère d'utiliser les filtres OSGi standard plutôt que l'en-tête Eclipse-PlatformFilter personnalisé d'Eclipse, si possible. – SteveD

+0

Voici ce que j'utilise, mais en utilisant des filtres OSGI comme suggéré par Steven –

0

Je suivrais l'exemple du fragment et du paquet org.eclipse.swt.win32 eux dans la racine du pot.

Pour référence, il y a une section du SWT Examples documentation qui décrit comment exécuter les exemples autonomes.

+1

Je ferais attention à suivre les pratiques que vous trouverez dans le code Eclipse, car ils ont souvent un mélange de styles et sont, en général, ne pas utiliser les dernières recommandations (toujours le problème avec une base de code mature). – SteveD

+0

@stevendick Je ne comprends pas ce que vous voulez dire, ma réponse suggère d'utiliser un fragment et de mettre la DLL dans le pot, essentiellement la même que la réponse de Malaxeur que vous recommandez –

+0

Oui, le principe de base est le même, mais la plupart du code Eclipse que j'ai vu n'utilise pas les filtres OSGi standard pour contrôler quels fragments sont chargés à l'exécution. Je vois que la suggestion de Malaxeur utilise l'extension de manifeste Eclipse plutôt que l'OSGi standard. – SteveD

1

Comme Eclipse RCP est basé sur OSGi, vous pouvez également consulter la documentation d'OSGi 4.1 sur la gestion du code natif. Je crois que les gars d'Eclipse ont commencé à recommander l'approche OSGi, mais je ne me souviens pas où j'ai vu la recommandation. J'ai utilisé la suggestion de Malaxeur pour utiliser des fragments et des filtres. La disposition réelle à l'intérieur du fragment/bundle n'a pas d'importance, bien que je créerais un répertoire séparé lib si j'avais plus d'une bibliothèque. La spécification OSGi 4.1 est la suivante: here.

Questions connexes