Partilhar via


Alterações feitas na função auxiliar de carregamento com atraso da DLL desde o Visual C++ 6.0

Se você tiver várias versões do Visual C++ em seu computador ou se você tiver definido sua própria função auxiliar, você pode ser afetado por alterações feitas à DLL atrasado carregando a função auxiliar. Por exemplo:

  • __delayLoadHelper agora é __delayLoadHelper2

  • __pfnDliNotifyHook agora é __pfnDliNotifyHook2

  • __pfnDliFailureHook agora é __pfnDliFailureHook2

  • __FUnloadDelayLoadedDLL agora é __FUnloadDelayLoadedDLL2

Dica

Se você estiver usando a função padrão auxiliares, essas alterações não afetarão o.Não há nenhuma alteração em relação à medida que você invoca o vinculador.

Várias versões do Visual C++

Se você tiver várias versões do Visual C++ no computador, verifique as correspondências delayimp.lib do vinculador. Se houver uma incompatibilidade, você obterá um relatório de erros ___delayLoadHelper2@8 ou ___delayLoadHelper@8 do vinculador como um símbolo externo não resolvido. O antigo implica um novo vinculador com um delayimp.lib antigo, e o último implica um o vinculador antigo por um novo delayimp.lib.

Se você receber um erro não resolvido do vinculador, execute dumpbin /linkermember: 1 em delayimp.lib que você espera conter a função auxiliar para ver que função auxiliar é definida por vez. A função auxiliar também poderia ser definida em um arquivo de objeto; executar dumpbin /symbols e procure delayLoadHelper(2).

Se você souber o vinculador Visual C++ 6.0, então:

  • Dumpbin de execução no arquivo de .lib ou de .obj auxiliares de carga de atraso para determinar se define __delayLoadHelper2. Caso contrário, o link falhará.

  • Define __delayLoadHelper no arquivo de .lib ou de .obj auxiliares de carga de atraso.

Função definido pelo usuário auxiliar

Se você definir sua própria função auxiliar e estiver usando a versão atual do Visual C++, faça o seguinte:

  • Renomeie a função auxiliar a __delayLoadHelper2.

  • Como os ponteiros no descritor de atraso (ImgDelayDescr em delayimp.h) foram modificados de endereços absolutos vaso () para endereços relacionados () RVAs funcionem como esperado em ambos os 32 - e programas de 64 bits, você precisa converter esses novamente nos ponteiros. Uma nova função foi apresentada: PFromRva, encontrado em delayhlp.cpp. Você pode usar essa função em cada um dos campos do descritor para convertê-los novamente a 32 - ou ponteiros de 64 bits. A função padrão auxiliares de carga de atraso continua a ser um bom modelo a ser usado como um exemplo.

Carregar todas as importações para uma DLL Atraso- carregado

O vinculador pode carregar todas as importações de uma DLL que você especifica para atraso ser carregado. Consulte Carregando todas as importações para uma DLL Atraso- carregado para obter mais informações.

Consulte também

Referência

Noções básicas sobre a função auxiliar