J'écris une DLL pour un lecteur audio (foobar2000) en utilisant son SDK. Mes liens DLL vers une autre DLL, et je l'ai fait en utilisant une bibliothèque d'importation (.lib). Cependant, au moment de l'exécution, le lecteur audio se plaint que ma DLL (celle qui est liée à l'autre) manque d'une dépendance. Je ne sais pas si cela peut être généralisé ou non, mais si la première DLL est liée à l'exécution sans bibliothèque d'importation, ne peut-elle pas lier à une autre DLL avec une bibliothèque d'importation? Et si c'est effectivement le cas, pourquoi est-ce ainsi?Une DLL peut-elle être liée à une autre DLL avec une bibliothèque d'importation si la première DLL est liée au moment de l'exécution?
Répondre
Votre dll devrait fonctionner correctement, je pense que vous devez vérifier avec marcheur de dépendance pour voir ce que vous manquez
Vous pouvez lier une DLL à n'importe quelle autre DLL lors de l'exécution. Les règles pour lier la DLL sont les mêmes. Pouvez-vous poster le nom de la dépendance manquante? Est-ce que la dépendance est le bon répertoire?
Lorsque OS charge une DLL (et EXE, aussi, bien sûr), il recherche son importation table et essaie de charger des bibliothèques importées aussi.
Si elles ne sont pas trouvées, vous voyez une erreur que vous avez décrite.
Vous pouvez utiliser le chargement dynamique de la bibliothèque dépendante en utilisant LoadLibrary et GetProcAddress pour l'empêcher, mais vous devrez alors gérer les erreurs avec des dépendances manquantes.
En fait, j'utiliserais Dependency Walker sur la DLL pour essayer de savoir quelles importations le système d'exploitation ne peut pas satisfaire – EFraim
- 1. Vérifiez si une bibliothèque DLL est déjà chargée? (Java)
- 2. Compiler une DLL avec gcc
- 3. Quel est le meilleur outil pour trouver à quelle DLL une autre DLL VB6 est référencée?
- 4. Lien vers une bibliothèque statique liée à une bibliothèque statique
- 5. Créer une DLL: Comment utiliser une DLL pour créer une nouvelle DLL?
- 6. problèmes avec une grande DLL?
- 7. Singleton dans une DLL?
- 8. ASP.NET licence une DLL
- 9. Une DLL peut-elle appeler une DLL .NET?
- 10. Création d'une DLL qui lie à une autre DLL (MSVS2008 C++)
- 11. Comment puis-je vérifier si une bibliothèque (dll) est disponible en C#?
- 12. Référez-vous à une DLL qui se trouve dans un autre DLL dans WPF
- 13. Génération de l'assembly DLL dynamiquement au moment de l'exécution
- 14. Dépendances supplémentaires/DLL/Bibliothèque
- 15. Activer une DLL injectée dans Windows
- 16. Comment trouver une DLL avec un CLSID?
- 17. Identifiez si un fichier (dll/exe) est verrouillé ou non par un processus ou une bibliothèque
- 18. Déploiement de plusieurs programmes référençant une DLL
- 19. Écriture d'un remplacement pour une DLL C?
- 20. Utilisation de NHibernate dans une DLL
- 21. Comment vérifier si une méthode python est liée ou non?
- 22. Obtenir le nom d'une DLL à partir de la DLL
- 23. Comment supprimer une DLL auto-installée?
- 24. Supprimer une image liée à un contrôle
- 25. Le contrôleur MVC doit-il être dans une DLL séparée?
- 26. Comment savoir si dll RAPI est existant
- 27. Comment savoir pourquoi ma DLL dépend de zlib1.dll?
- 28. Comment désactiver une sortie de console .DLL?
- 29. Comment appeler une DLL Delphi de VB6
- 30. Comment vérifier si DLL est compilé debug-
Merci d'avoir suggéré un dépendant. Il s'avère que mon autre DLL a été compilé avec/MD, ce qui l'a obligé à rechercher msvcr90.dll, qui n'a pas pu être trouvé pour une raison quelconque. Re-compilation de l'autre DLL avec/MT (qui statiquement liens) l'a résolu. –