2009-10-04 4 views
1

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

0

Votre dll devrait fonctionner correctement, je pense que vous devez vérifier avec marcheur de dépendance pour voir ce que vous manquez

+0

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. –

1

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?

0

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.

+0

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

Questions connexes