Fazer o regsvr32 ignorar uma dependência de DLL

2

Estou tentando fazer funcionar algum software para o qual não temos o instalador (e a empresa não pode fornecer).

Uma DLL personalizada precisa ser registrada, o que nós temos, mas ela depende de outra DLL - um driver para uma câmera industrial Basler ( PYLONBASE_MD_VC80.dll ). Eventualmente encontrei isso online. Agora toda uma caixa de Pandora de DLLs é necessária:

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

Eles estão se mostrando difíceis de encontrar.

Existe alguma maneira de fazer com que o software ignore toda a dependência PYLONBASE_MD_VC80.dll , pois ela nunca precisará dela (nenhuma câmera Basler está sendo usada)?

Tudo isso está sendo encontrado através do Dependency Walker.

    
por wjdp 20.07.2012 / 19:27

1 resposta

3

Você pode escrever sua própria versão de stub de pylonbase_md_vc80.dll que exporta funções vazias que correspondem aos nomes importados pela DLL que você precisa carregar. O Dependency Walker deve mostrar os nomes das funções que a DLL importa de pylonbase_md_vc80.dll . Você pode ter que colocar parâmetros fictícios nas funções se os nomes importados forem decorados com sufixos @NUMBER .

Como alternativa, você pode encontrar uma ferramenta que possa marcar pylonbase_md_vc80.dll como uma carga atrasada da DLL na DLL que você possui. Em seguida, ele deve carregar e executar sem precisar pylonbase_md_vc80.dll , desde que nenhuma chamada seja feita para uma função no último. Eu não sei de nenhuma ferramenta desse tipo.

    
por 20.07.2012 / 20:05