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.