Zmiany w funkcjach pomocnika opóźnionego załadunku bibliotek DLL po Visual C++ 6.0
Jeśli masz wiele wersji programu Visual C++ na komputerze lub jeśli zdefiniowana funkcja helper, użytkownik może mieć wpływ zmian wprowadzonych do biblioteki DLL opóźnione podczas ładowania funkcji pomocnika.Na przykład:
__delayLoadHelper jest teraz __delayLoadHelper2
__pfnDliNotifyHook jest teraz __pfnDliNotifyHook2
__pfnDliFailureHook jest teraz __pfnDliFailureHook2
__FUnloadDelayLoadedDLL jest teraz __FUnloadDelayLoadedDLL2
[!UWAGA]
Jeśli używasz domyślnej funkcji pomocnika te zmiany nie wpływają na Ciebie.Nie ma żadnych zmian dotyczących jak wywołać program łączący.
Wiele wersji programu Visual C++
Jeśli masz wiele wersji programu Visual C++ na komputerze, upewnij się, że program łączący pasuje do delayimp.lib.Jeśli występuje niezgodność, otrzymają błąd linker zgłoszenie albo ___delayLoadHelper2@8 lub ___delayLoadHelper@8 jako nierozwiązane symbol zewnętrznych.Pierwsza oznacza nowy program łączący ze starego delayimp.lib, a te ostatnie oznacza stary linker z nowych delayimp.lib.
Jeśli pojawi się błąd nierozwiązane linker Uruchom dumpbin /linkermember: 1 na delayimp.lib, które mają zawierać funkcję pomocnika, aby zobaczyć, która funkcja helper jest zdefiniowane w zamian.Funkcja helper może być również określone w pliku obiektu; Uruchom dumpbin /symbols i wyszukać delayLoadHelper(2).
Jeśli wiesz, że masz linker Visual C++ 6.0, a następnie:
Aby uruchomić dumpbin pliku .lib lub .obj pomocnika obciążenia opóźnienie do określenia, czy definiuje __delayLoadHelper2.W przeciwnym razie łącze zakończy się niepowodzeniem.
Definiowanie __delayLoadHelper w opóźnienie załadować pliku .lib lub .obj osoby pomagającej.
Funkcja zdefiniowana przez użytkownika pomocnika
Jeśli zdefiniowana funkcja helper i są przy użyciu bieżącej wersji programu Visual C++, wykonaj następujące czynności:
Zmień nazwę funkcji pomocnika do __delayLoadHelper2.
Ponieważ wskaźniki w deskryptorze opóźnienia (ImgDelayDescr w delayimp.h) zostały zmienione z adresów bezwzględnych (kanalików) na względne adresy (RVAs), aby działać zgodnie z oczekiwaniami w obu programach 32 - i 64-bitowe, należy przekonwertować te wstecz do wskaźników.Wprowadzono nową funkcję: PFromRva w delayhlp.cpp.Ta funkcja na każde z pól w deskryptorze służy do przekonwertować z powrotem albo wskaźniki 32 - lub 64-bitowych.Domyślne opóźnienie obciążenia pomocnika funkcji nadal jest dobry szablon ma zostać użyty jako przykład.
Załaduj cały przywóz dla biblioteki DLL załadowane opóźnienie
Program łączący można załadować całego przywozu z biblioteki DLL określona do opóźnień załadowany.Zobacz Ładowanie całego przywozu dla biblioteki DLL Delay-Loaded uzyskać więcej informacji.