2 votes

Faire en sorte que regsvr32 ignore une dépendance de DLL

J'essaie de faire fonctionner un logiciel dont nous n'avons pas l'installateur (et que la société est incapable de fournir).

Une DLL personnalisée doit être enregistrée, ce que nous avons fait mais elle dépend d'une autre DLL - un pilote pour une caméra industrielle Basler ( PYLONBASE_MD_VC80.dll ). J'ai fini par le trouver en ligne. Maintenant, une boîte de Pandore entière de DLL est nécessaire :

XERCES-C_MD_VC80_V2_7.DLL
GCBASE_MD_VC80_V2_0.DLL
GENAPI_MD_VC80_V2_0.DLL
LOG_MD_VC80_V2_0.DLL
LOG4CPP_MD_VC80_V2_0.DLL

Ils s'avèrent difficiles à trouver.

Y a-t-il un moyen de faire en sorte que le logiciel ignore la totalité PYLONBASE_MD_VC80.dll dépendance car il n'en aura jamais besoin (aucune caméra Basler n'est utilisée) ?

Tout cela se trouve dans le Dependency Walker.

3voto

Fran Points 5143

Vous pourriez écrire votre propre version de pylonbase_md_vc80.dll qui exporte des fonctions vides correspondant aux noms importés par la DLL que vous devez charger. Dependency Walker devrait vous montrer les noms des fonctions que la DLL importe de pylonbase_md_vc80.dll . Il se peut que vous deviez mettre des paramètres fictifs dans les fonctions si les noms importés sont décorés de @NUMBER les suffixes.

Alternativement, vous pouvez trouver un outil qui peut marquer pylonbase_md_vc80.dll en tant que charge différée DLL dans la DLL que vous possédez. Ensuite, il devrait se charger et s'exécuter sans jamais avoir besoin de pylonbase_md_vc80.dll pour autant qu'aucun appel ne soit fait à une fonction de cette dernière. Je ne connais pas d'outil de ce type.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X