2010-12-12 39 views
0

Lorsque, par exemple, je crée un programme et le compile avec MinGW si je supprime la variable d'environnement j'ai besoin de mettre la DLL dans le répertoire pour que cela fonctionneObtenir un programme à exécuter uniquement avec certaines DLL dans le répertoire

ie. libgcc_s_dw2-1.dll

sans le programme ne démarre même pas.

Lors du développement avec QT j'ai remarqué que j'avais besoin d'un autre dll dans le répertoire, c'était QtCored4.dll, je me demandais comment le programme sait que la DLL est manquante?

Est-il également possible d'ajouter quelque chose comme ceci à un programme, comme une instruction de définition ou quelque chose?

je besoin d'une réponse qui peut fonctionner avec C++ :)

Répondre

1

qui est pris en charge par le système d'exploitation - depuis votre programme utilise des fonctions de la DLL, il est automatiquement chargé lorsque votre programme démarre, et si le DLL est manquant, vous obtiendrez une erreur. Vous pouvez en savoir plus sur ce processus sur MSDN: Load-Time Dynamic Linking.

1

lors du développement avec QT je remarqué que je besoin d'un autre dll dans le répertoire, il était QtCored4.dll, je me demandais comment le programme sait que la dll manque

Vous pouvez également essayer de charger la DLL vous-même à l'exécution, et gérer l'échec avec élégance. Voir LoadLibrary et GetProcAddress.

+0

Mieux encore, utilisez le chargement différé. De cette façon, le compilateur s'occupe de tous les appels de 'GetProcAddress', et il vous suffit de fournir un code de récupération (ou de rapport d'erreur) lorsque' LoadLibrary' échoue. –