2010-01-26 7 views
6

La situation est la suivante. En général, j'utilise RAD Studio 2010 pour le développement de Delphi. J'ai quelques composants que je voudrais redistribuer sous forme binaire (* .bpl sans source). Mais j'aimerais que les gens puissent les utiliser malgré leur version Delphi. Mais, par exemple, les fichiers dcu ne peuvent être utilisés que par la version du compilateur, qui les a générés. Presque la même situation est avec les fichiers bpl comme je sais. Chaque fichier bpl nécessitera la bibliothèque VCLXX.bpl correspondante en fonction de la version de Delphi. Comment puis-je faire mes bpls, compilés en 2010 pour pouvoir être utilisés dans Delphi7, 2007 etc?Compilation du paquet de composants Delphi (bpl) pour différentes versions de Delphi

Est-ce que la seule solution est d'avoir toutes les versions de Delphi installées et de compiler les fichiers bpl séparément dans chaque version?

+0

question «bonus» potentielle: les versions «complètes» de Delphi (pas de mise à jour) sont-elles nécessaires pour construire ces fichiers BPL? Par exemple, après la mise à niveau de Delphi 7 vers Delphi 2010, la licence permet-elle de distribuer des BPL créés avec les fichiers Delphi 7 version * et * d'origine créés avec la mise à niveau de Delphi 2010? – mjn

+1

Oui, @mjustin, c'est autorisé. Les gens le font tout le temps. Mon impression est que c'est ce que font tous les fournisseurs de composants. –

+3

La plupart des développeurs Delphi refusent d'utiliser des composants distribués sans sources - exactement parce que vous ne pouvez pas utiliser une version plus récente de Delphi jusqu'à ce que les paquets mis à jour soient disponibles, et si ces paquets ne sont pas modifiés, vous avez un problème. –

Répondre

7

Oui, c'est la seule solution. Chaque compilateur produit des DCU et des BPL spécifiques à sa propre version. La seule exception que je connaisse est que Delphi 2006 et 2007 partagent le même format.

+1

Pour approfondir ce sujet - les fournisseurs de composants qui expédient uniquement des binaires ont tendance à les empaqueter dans un programme d'installation qui contient TOUTES les binaires pris en charge, puis à installer ceux que l'utilisateur sélectionne. –

2

Pour distribuer du code compilé pouvant être utilisé par plusieurs versions de compilateur, distribuez une DLL ordinaire et non une BPL. Les packages et les unités sont spécifiques à la version.

Créez des fonctions autonomes que vous exportez dans le style C ou créez des objets COM enregistrés auprès du système d'exploitation.

Cependant, il ne doit pas nécessairement changer toute votre stratégie de développement; il peut s'agir d'une DLL qui utilise la BPL, de sorte que vous pouvez conserver tout le travail que vous avez déjà mis dans le paquet.

+0

Malheureusement, cela nécessitera une application de mon utilisateur pour inclure mes bibliothèques DLL. Je ne pense pas que les utilisateurs réguliers seront heureux de les redistribuer. –

+0

C'est ce qu'ils auraient à faire si votre plan d'origine - un BPL - était viable. Il n'y a pas de différence à cet égard. (Bien que j'aie entendu dire qu'il existe des moyens de regrouper une DLL dans un fichier EXE, pour ceux qui se soucient vraiment du nombre de fichiers qu'ils distribuent.) –

+0

Delphi peut prendre du code de BPL et l'intégrer dans l'exécutable cible. Il n'est pas nécessaire de redistribuer BPL séparément. –

0

Je peux créer un programme d'installation qui récupère les versions Delphi installées sur la machine. Choisissez pour Delphi que vous voulez créer de BPL et appelez le correspondant Dcc par la ligne de commande pour générer les correspondants BPL et installer dans Delphi. Vous pouvez chercher dans le programme d'installation de JVCL à titre d'exemple.

Att.

+0

@SaCi, JVCL est redistribué sous forme de source et est compilé en binaire sur le développeur PC cible. Donc, ce n'est pas mon cas. –

0

Vous pouvez créer un fichier obj dans le constructeur C++ et lier celui de Delphi, distribuer un petit fichier pas (en-tête). Le format obj de constructeur C++ n'a pas été changé de Delphi 7 à 2009 (je peux confirmer 2010 mais je pense que ce sera le même).

Vous devrez tester si cela est possible pour les composants visuels/de conception.

Questions connexes