Etant développeur amateur, j'aimerais savoir s'il est possible de mettre tout les DLLs dans un sous-fichier dans le projet au lieu de les mettre forcément à côté du .exe ?
Je suis un peu maniaque et aime bien tout ranger dans des petites cases, et surtout pour que ça paraisse plus propre quand je donne quelque chose à des amis et qu'ils ne cherchent pas le .exe entre tout ces .dll .
J'ai parcouru l'internet en quête d'une réponse, je suis tombé sur des histoires de LoadLibrary ou bien SetDllDirectory , mais sans succès. De même j'ai cherché sur ce forum, un post de 2013 est le plus récent sur le sujet mais pas vraiment de réponse.
Donc je m'adresse à vous, si vous avez une solution plutôt simple ou bien détaillée pour ranger tout les petits .dll dans un fichier à coté du .exe au lieu de prendre plein de place dans le répertoire de base.
Cette commande [admin] sous windows permet de donner les attributs Read only, fichier système et fichier caché. C'est comme ça que je fait, le .exe apparait mais pas les .dll (mais toujours présente et accessible pour le .exe)
- Edité par Sceau de Nîmes 18 janvier 2018 à 8:39:35
J'ai demandé à Google mais il est sous assistance respiratoire à cause du Corona.
Cette commande [admin] sous windows permet de donner les attributs Read only, fichier système et fichier caché. C'est comme ça que je fait, le .exe apparait mais pas les .dll (mais toujours présente et accessible pour le .exe)
- Edité par Chevalier Numérique il y a 15 minutes
Excuse moi, mais est ce que tu sais comment attribué ces mêmes attribut à un dossier en particulier sous windows toujours ? 🙂
Comme expliqué dans cette page, la recherche des .dll sous windows se fait dans un ordre précis :
1. Le répertoire contenant le module exécutable du processus en cours.
2. Le répertoire actif.
3. Le répertoire System de Windows. La fonction GetSystemDirectory récupère le chemin de ce répertoire.
4. Le répertoire Windows. La fonction GetWindowsDirectory récupère le chemin de ce répertoire.
5. Les répertoires désignés dans la variable d'environnement PATH.
Tu ne veux pas du 1, le 2 est trop bancale pour permettre d'être sûr (si le programme est exécuté depuis la ligne de commande, le repertoire actif n'est pas forcement celui que tu crois), il vaut mieux ne pas trop jouer avec le 3, le 4 pourrait te convenir, et le 5 est probablement ta réponse.
Maintenant, si tu ne veux pas installer ton programme sur le PC cible et que tu souhaite uniquement distribuer un programme "a la va-vite", la méthode de Chevalier Numérique est un bon moyen de contournement. Tu as aussi la possibilité de ne pas utiliser de bibliothèque dynamique (.dll) mais statique. Attention à ben te renseigner sur ce que cela implique.
Cela ne changeras pas le fait que les .dll ne seront pas trouvé à moins de modifier le PATH. Et en général, la modification du PATH, c'est fait quand on installe un logiciel.
Je pense que cacher les .dll contenu à la racine est un bon bricolage.
Tu peux aussi mettre ton exe et tes dll dans des sous répertoires et faire un .bat (exécutable que lancera ton ami ou toi) pour régler le PATH et lancer ton exe.
pushd "%~dp0"
set PATH="%CD%\lib";%PATH%
set exe_path="%CD%\bin\mon_projet.exe"
popd
start "" "%exe_path%"
(Je n’ai pas de PC Windows sous la main et je ne connais que très peu le batch (et Windows d’ailleurs), du coup il y a de forte chance que ce script ne fonctionne pas. C’est avant tout pour l’idée.)
Comment ranger les DLL ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
J'ai demandé à Google mais il est sous assistance respiratoire à cause du Corona.
J’ai pas besoin que tu crois ce que moi je crois.
J'ai demandé à Google mais il est sous assistance respiratoire à cause du Corona.
J’ai pas besoin que tu crois ce que moi je crois.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
J'ai demandé à Google mais il est sous assistance respiratoire à cause du Corona.
J’ai pas besoin que tu crois ce que moi je crois.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent