Alterações na DLL atrasada ao carregar função auxiliar 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 de auxiliar, você pode ser afetada pelas alterações feitas a DLL atrasada carregar função auxiliar.Por exemplo:
__delayLoadHelper is now __delayLoadHelper2
__pfnDliNotifyHook is now __pfnDliNotifyHook2
__pfnDliFailureHook is now __pfnDliFailureHook2
__FUnloadDelayLoadedDLL is now __FUnloadDelayLoadedDLL2
Observação: |
---|
Se você estiver usando a função auxiliar do padrão, essas alterações não afetarão você.Não há nenhuma alteração sobre como você chamar o vinculador. |
Várias versões do Visual C++
Se você tiver várias versões do Visual C++ em seu computador, verifique se que o vinculador corresponde delayimp.lib.Se houver uma incompatibilidade, ocorrerá um erro de vinculador relatar qualquer um dos ___delayLoadHelper2@8 ou ___delayLoadHelper@8 sistema autônomo um símbolo de externo não resolvido. O primeiro implica um vinculador novo com um delayimp.lib antigo e o último implica um vinculador antigo com um novo delayimp.lib.
Se você receber um erro de vinculador não resolvido, execute o DUMPBIN /linkermember: 1 em delayimp.lib que você espera para conter a função auxiliar para ver qual função auxiliar é definida em vez disso.A função auxiliar também pode ser definida em um arquivo de objeto; executar DUMPBIN /symbols e , procuredelayLoadHelper(2).
Se você souber que o vinculador Visual C++ 6.0, você tem, em seguida:
Executar dumpbin o arquivo .lib ou .obj do auxiliar de carregamento de atraso para determinar se ele define __delayLoadHelper2.Caso contrário, o link falhará.
Definir __delayLoadHelper no arquivo de .lib ou .obj do auxiliar de carregamento de atraso.
Função de auxiliar definido pelo usuário
Se você definido sua própria função auxiliar e estiver usando a versão corrente do Visual C++, faça o seguinte:
Renomeie a função auxiliar para __delayLoadHelper2.
sistema autônomo sistema autônomo ponteiros no descritor de atraso (ImgDelayDescr em delayimp.h) tem sido foi alterados a partir endereços absolutos (VAs) para endereços relativos (RVAs) funcione conforme o esperado em ambos sistema autônomo programas de 32 e 64 bit, é necessário converter esses back para ponteiros.Introduziu uma nova função: PFromRva, encontrado no delayhlp.cpp.Você pode usar essa função em cada um dos campos no descritor de convertê-los para qualquer um dos ponteiros de 32 ou 64 bit.A função de auxiliar carga padrão atraso continua sendo um mercadoria modelo a ser usado sistema autônomo exemplo.
Carregar todas as importações para uma DLL carregados de atraso
O vinculador pode carregar todas as importações de uma DLL que você especificou para ser carregado de atraso.See Carregar todas as importações para uma DLL carregados de atraso para obter mais informações.