2009-04-02 8 views
1

J'ai un grand projet avec plusieurs bibliothèques tierces. Je veux tout construire pour 32 et pour l'architecture 64 bits. Plusieurs bibliothèques créent des bibliothèques partagées (dll). Quel est le meilleur moyen de fournir ces dlls aux exécutables compilés de mon projet? J'ai pensé que je peux mettre toutes ces DLL dans un répertoire qui est ajouté à la variable PATH. Mais la plupart des dll créées à partir des librairies tierces sont nommées de la même manière sous compilation 32 et 64 bits, donc je ne peux pas les mettre dans un répertoire. Puis-je créer deux répertoires, un pour les dll 32 bits et un pour les dll 64 bits et l'exécutable choisit les dlls droite? Ou avez-vous une meilleure idée de laisser mon exécutable charger les bonnes DLL? Merci!Chargement dll exécutable (x32, x64): choisir le bon

Répondre

0

Le système cible est soit 32 ou 64 bits, jamais les deux. Vous devez installer uniquement les versions requises en fonction du bit-ness du système. Ensuite, vous n'avez plus que deux ensembles de binaires non entrecroisés et vous installez un ensemble nécessaire pour le système cible et vous n'avez jamais de problème à détecter ce qu'il faut charger lors de l'exécution.

+0

En fait, avec WOW, un système 64 bits est également un système 32 bits. Mais vous avez alors à la fois un répertoire Program Files 32 bits et 64 bits, donc toujours pas de mixage. – MSalters

+0

Oui, il est vrai que la cible d'un exécutable est soit 32 ou 64 bits. Mais je veux pouvoir cibler les deux architectures sur nos machines de développement (uniquement pour le développement, pas sur les "ordinateurs clients"). –

+0

Je suppose qu'il est préférable de simplement copier les exécutables 64 bits après la compilation dans un dossier et 32 ​​bits dans l'autre. Il est trivial de le configurer dans presque n'importe quel environnement de développement et il résout complètement le problème. – sharptooth

1

Puisqu'un exécutable 32 bits ne peut pas sélectionner les DLL 64 bits et vice-versa. Vous avez juste un répertoire avec tout 32 bits (exécutable + DLL) et un autre avec tout 64 bits.

Questions connexes