2017-10-03 5 views
1

Je construis mon application soit comme x86 ou x64. Cette application utilise une DLL externe.Visual Studio - C++ - créer et exécuter des applications comme 32bit ou 64bit - DLL de charge à partir ProgramFiles appropripate dir

J'ai système x64 (Windows 10) avec la même bibliothèque de DLL installé pour les deux plates-formes - x86 et x64. Ils sont placés dans les mêmes dossiers dans le répertoire Program Files approprié. Je peux manuellement placer le chemin à l'un dans la variable d'environnement PATH et woks. Mais il est un peu incovinient de réécrire PATH et de réinitialiser l'ordinateur lorsque je change de plateforme et que je veux tester l'autre. Y a-t-il une solution, comment le système charge automatiquement la DLL correcte à partir du répertoire Program Files correct?

+0

probablement liés: [Dynamic-Link Library ordre de recherche] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586 (v = vs.85) .aspx). – VTT

Répondre

0

Je solution trouvée pour les applications en cours d'exécution à partir de Visual Studio: How do I set the path to a DLL file in Visual Studio?

Il fonctionne comme epxected. Si j'exécute l'application Visual Studio, je règle la variable PATH par moi-même et fonctionne également.

+0

Vous ne devriez pas avoir besoin de définir PATH, c'est une technologie héritée et devrait être un dernier recours. Si vous ne voulez pas mettre la DLL dans le même répertoire que l'exécutable, le programme lui-même devrait savoir comment le trouver. (Je suppose que définir PATH peut être un raccourci utile dans un environnement de développement, mais la version ne devrait pas en dépendre.) Voir aussi [Ne pas utiliser l'état global pour gérer un problème local] (https: //blogs.msdn .microsoft.com/oldnewthing/20081211-00 /? p = 19873). –

0

Copiez le DLL dans l'emplacement de construction à côté de l'exécutable, pour VS cela est généralement \ Debug ou \ Release dans un sous-répertoire en fonction de l'architecture (à savoir x86 ou x64). Assurez-vous simplement que les emplacements cibles/de sortie sont correctement définis dans les paramètres du projet.

Vous devez copier une seule fois, ou plus exactement: à chaque fois après avoir « propre » la solution. Pour faciliter cela, beaucoup de gens utilisent un script dll-copy (batch, ruby ​​ou python) et l'exécutent automatiquement avant de créer ou de nettoyer. Vous pouvez appeler le script dans une étape de préconfiguration ou une étape de post-construction dans les paramètres du projet.

Vous pouvez également creuser dans CMake, que je recommande vraiment garder la matrice de construction organisée. Il installe également des actions de pré-construction et post-construction telles que le suivi des dépendances, la copie de fichiers, l'empaquetage, l'installation, la vérification de version, etc. mais à la fin, vous devrez apprendre à manipuler les mêmes paramètres de projet. une courbe d'apprentissage pour bien faire les choses.