Przejdź do treści

~/windows cat nie-znaleziono-punktu-wejscia-pr….md

Nie znaleziono punktu wejścia procedury — co oznacza błąd i jak go naprawić

Błąd „Nie znaleziono punktu wejścia procedury” w Windows: jak odczytać komunikat, naprawić DLL, Visual C++, SetDefaultDllDirectories i stary system.

CZCzarek Zawolski--aktualizacja=--czas=9 min--dział=Windows i Active Directory
Okno komunikatu o błędzie biblioteki DLL na ekranie komputera z systemem Windows
tldr.txt — W skrócie

~ xad tldr nie-znaleziono-punktu-wejs…

  • Komunikat oznacza, że program znalazł bibliotekę DLL, ale nie ma w niej funkcji, której potrzebuje — zwykle to zbyt stara wersja DLL albo zbyt stary Windows.
  • Z treści błędu odczytasz dwie rzeczy: nazwę funkcji (procedury) i nazwę pliku DLL. To one wskazują, co naprawiać.
  • Najczęstsze rozwiązania: aktualizacja lub ponowna instalacja programu, najnowszy Visual C++ Redistributable (x86 i x64) i usunięcie starej kopii DLL z folderu programu.
  • SetDefaultDllDirectories w KERNEL32.dll to typowy błąd Windows 7 bez aktualizacji KB2533623 (zastąpionej przez KB3063858).
  • Nie pobieraj pojedynczych plików DLL z serwisów typu „dll download” — to częste źródło kolejnych błędów i złośliwego oprogramowania.
$ tree --spis-tresci

Błąd „Nie znaleziono punktu wejścia procedury” oznacza, że program znalazł potrzebną bibliotekę DLL, ale nie ma w niej funkcji, której oczekuje. Prawie zawsze winna jest niezgodność wersji: na komputerze jest starsza biblioteka niż ta, z którą program zbudowano, albo sam Windows jest za stary dla danej aplikacji.

Dobra wiadomość: treść komunikatu mówi dokładnie, czego brakuje. Poniżej wyjaśniam, jak ją odczytać, i pokazuję rozwiązania w kolejności od najprostszych — od ponownej instalacji programu, przez pakiety Visual C++, po naprawę plików systemowych.

Co dokładnie oznacza komunikat o punkcie wejścia procedury

Każdy program dla Windows ma tablicę importów — listę funkcji, które pobiera z bibliotek DLL (np. KERNEL32.dll, MSVCP140.dll, vulkan-1.dll). Przy uruchamianiu programu systemowy loader otwiera każdą bibliotekę i szuka w niej tych funkcji. Jeśli którejś nie znajdzie, przerywa start i wyświetla błąd.

Komunikat wygląda zwykle tak:

  • „Nie znaleziono punktu wejścia procedury SetDefaultDllDirectories w bibliotece dołączanej dynamicznie KERNEL32.dll”,
  • w angielskim Windows: „The procedure entry point … could not be located in the dynamic link library …”.

Z komunikatu wyciągasz dwie informacje:

  1. Nazwę procedury (funkcji) — np. SetDefaultDllDirectories, DiscardVirtualMemory, ?_Xbad_function_call@std@@YAXXZ.
  2. Nazwę i często pełną ścieżkę biblioteki DLL — np. C:\Program Files\Aplikacja\libcrypto-3-x64.dll.

To rozróżnienie jest ważne, bo wyznacza kierunek naprawy. Jeśli biblioteka to plik systemowy (KERNEL32.dll, USER32.dll, ntdll.dll), problemem jest wersja Windows. Jeśli to biblioteka środowiska uruchomieniowego (MSVCP140.dll, VCRUNTIME140.dll, api-ms-win-crt-*.dll), trzeba zaktualizować Visual C++. Jeśli to biblioteka z folderu programu — zawinił sam program lub jego stara kopia DLL.

Pokrewny komunikat „Nie można zlokalizować liczby porządkowej … w bibliotece …” (ang. „The ordinal … could not be located”) ma tę samą przyczynę — funkcja jest importowana po numerze zamiast nazwy — i naprawia się go tak samo.

Szybka diagnoza: jaka biblioteka, taka przyczyna

Biblioteka w komunikacieNajbardziej prawdopodobna przyczynaCo zrobić
KERNEL32.dll, USER32.dll, ntdll.dllProgram wymaga nowszego WindowsZaktualizuj system lub użyj starszej wersji programu
MSVCP140.dll, VCRUNTIME140.dll, VCRUNTIME140_1.dllStary Visual C++ Redistributable lub stara kopia w folderze programuZainstaluj najnowszy pakiet x86 i x64
api-ms-win-crt-*.dll, ucrtbase.dllBrak lub stara wersja Universal C Runtime (głównie Windows 7/8.1)Windows Update, pakiet Visual C++
vulkan-1.dll, nvcuda.dll, OpenCL.dllNieaktualny sterownik karty graficznejZainstaluj najnowszy sterownik GPU
Biblioteka z folderu programu lub gryUszkodzona albo niekompletna instalacja, mieszanie wersjiReinstalacja, weryfikacja plików
libcrypto, libssl, zlib1.dll, Qt*.dllKonflikt kopii tej samej biblioteki w PATHZnajdź i usuń kolizję (sekcja 4)

1. Zaktualizuj lub zainstaluj ponownie program

Najprostsza i często skuteczna metoda. Błąd pojawia się często po częściowej aktualizacji, przerwanej instalacji albo po skopiowaniu programu z innego komputera — wtedy plik EXE jest w nowej wersji, a biblioteki obok niego w starej.

  1. Otwórz Ustawienia → Aplikacje → Zainstalowane aplikacje (w Windows 10: Aplikacje i funkcje).
  2. Odinstaluj problematyczny program.
  3. Pobierz najnowszy instalator wyłącznie ze strony producenta i zainstaluj go od nowa.
  4. Zwróć uwagę na architekturę: na 64-bitowym systemie instaluj wersję 64-bitową, chyba że producent zaleca inaczej.

W przypadku gier ze Steam, Epic Games czy GOG użyj funkcji weryfikacji plików (w Steam: prawy przycisk na grze → Właściwości → Zainstalowane pliki → Sprawdź spójność plików gry). Launcher sam podmieni uszkodzone lub niepasujące biblioteki.

2. Zainstaluj najnowszy Microsoft Visual C++ Redistributable

Duża część programów napisanych w C++ korzysta z bibliotek MSVCP140.dll, VCRUNTIME140.dll i VCRUNTIME140_1.dll. Są one wspólne dla Visual Studio 2015 i wszystkich nowszych wersji, ale działają zgodnie „w górę”: program skompilowany nowszym kompilatorem wymaga co najmniej tak samo nowej wersji bibliotek. Jeśli w systemie siedzi pakiet sprzed kilku lat, nowy program nie znajdzie w nim funkcji i pokaże błąd punktu wejścia.

  1. Wejdź na stronę Microsoftu z najnowszymi pakietami Visual C++ Redistributable.
  2. Pobierz obie wersje: X64 (vc_redist.x64.exe) i X86 (vc_redist.x86.exe). Wersja x86 jest potrzebna dla programów 32-bitowych, także na 64-bitowym Windows. Na komputerach z procesorem ARM64 pobierz dodatkowo wersję ARM64.
  3. Uruchom oba instalatory. Jeśli pakiet już jest, wybierz Napraw (Repair).
  4. Uruchom ponownie komputer.

Jeśli wolisz wiersz poleceń, na Windows 10 i 11 możesz użyć menedżera pakietów winget:

winget install --id Microsoft.VCRedist.2015+.x64 -e
winget install --id Microsoft.VCRedist.2015+.x86 -e

Starsze pakiety (2008, 2010, 2012, 2013) to osobne biblioteki (msvcr100.dll, msvcp120.dll itd.) i nie kolidują z nowymi. Nie odinstalowuj ich „na zapas” — któryś ze starszych programów może ich nadal używać.

3. Program wymaga nowszego Windows (KERNEL32.dll, SetDefaultDllDirectories)

Gdy w komunikacie widnieje KERNEL32.dll lub inna biblioteka systemowa, program korzysta z funkcji, której Twoja wersja Windows po prostu nie ma. Nie da się tego naprawić podmianą pliku — biblioteki systemowe są integralną częścią systemu.

Najczęstsze przypadki:

  • SetDefaultDllDirectories, AddDllDirectory w KERNEL32.dll — Windows 7 lub Server 2008 R2 bez aktualizacji zabezpieczeń KB2533623. Microsoft wycofał ją z pobierania; zastępuje ją aktualizacja KB3063858. Wymagany jest też Service Pack 1. Ten błąd często zgłaszają instalatory nowszych programów.
  • DiscardVirtualMemory w KERNEL32.dll — aplikacje oparte na Chromium lub Electronie (np. komunikatory, przeglądarki) w wersjach, które nie wspierają już Windows 7 i 8.1.
  • GetSystemTimePreciseAsFileTime — funkcja dostępna od Windows 8; brak jej w Windows 7.
  • funkcje wprowadzone w nowszych wydaniach Windows 10 i 11 — program wymaga konkretnej minimalnej wersji systemu, co zwykle jest podane w wymaganiach na stronie producenta.

Co możesz zrobić:

  1. Sprawdź wersję systemu: naciśnij Win + R, wpisz winver i zatwierdź Enterem.
  2. Zainstaluj wszystkie dostępne aktualizacje przez Windows Update.
  3. Jeśli program wymaga nowszego systemu, zostają dwie drogi: starsza wersja programu, która jeszcze obsługuje Twój Windows, albo aktualizacja systemu.

Ważne: Windows 7 i 8.1 od dawna nie dostają poprawek bezpieczeństwa, a Windows 10 stracił standardowe wsparcie 14 października 2025 r. Coraz więcej programów przestaje działać na tych systemach i błędy punktu wejścia będą się pojawiać coraz częściej. Jeśli sprzęt na to pozwala, przejście na Windows 11 rozwiązuje problem u źródła.

4. Usuń kolizję bibliotek (stara DLL w folderze programu lub w PATH)

Windows szuka bibliotek w ustalonej kolejności: najpierw w folderze programu, potem w katalogach systemowych, na końcu w folderach ze zmiennej PATH. Jeśli jakiś program wrzucił starą kopię popularnej biblioteki (np. libcrypto-3-x64.dll, zlib1.dll, Qt5Core.dll) do folderu z PATH, inna aplikacja może załadować właśnie tę starą wersję — i nie znaleźć w niej nowych funkcji. To klasyczne „piekło DLL”.

Sprawdź, gdzie w systemie leżą kopie biblioteki z komunikatu:

where.exe libcrypto-3-x64.dll

A następnie porównaj ich wersje:

Get-ChildItem "C:\Program Files\Aplikacja\libcrypto-3-x64.dll" | Select-Object FullName, @{n='Wersja';e={$_.VersionInfo.FileVersion}}

Jeśli komunikat podaje pełną ścieżkę do biblioteki spoza folderu programu, to właśnie ona jest ładowana zamiast właściwej. Rozwiązania:

  • zaktualizuj program, który „zaśmieca” PATH swoimi bibliotekami,
  • usuń zbędny wpis z PATH: Ustawienia → System → Informacje → Zaawansowane ustawienia systemu → Zmienne środowiskowe,
  • tymczasowo zmień nazwę konfliktowej kopii (np. na .dll.old) i sprawdź, czy problem znika.

Uwaga: Nigdy nie usuwaj ani nie podmieniaj plików w C:\Windows\System32 i C:\Windows\SysWOW64. Kopia biblioteki w folderze konkretnej aplikacji może zostać, ale systemowych plików nie ruszaj ręcznie — naprawiaj je narzędziami opisanymi w sekcji 6.

Przy trudniejszych przypadkach pomaga darmowe narzędzie Dependencies (następca Dependency Walker) — pokazuje, które biblioteki i funkcje importuje plik EXE i której z nich brakuje. Równie przydatny jest Process Monitor z pakietu Sysinternals: po odfiltrowaniu procesu widać, z jakiej ścieżki ładowana jest każda DLL.

5. Zaktualizuj sterownik karty graficznej

Jeśli błąd dotyczy vulkan-1.dll, nvcuda.dll, OpenCL.dll, amdxc64.dll lub podobnych bibliotek, gra lub program (np. do montażu wideo czy renderingu) potrzebuje nowszego sterownika GPU niż zainstalowany.

  1. Sprawdź model karty: Menedżer urządzeń → Karty graficzne.
  2. Pobierz sterownik bezpośrednio od producenta (NVIDIA, AMD lub Intel) — sterownik z Windows Update bywa starszy.
  3. Przy uporczywych problemach zainstaluj sterownik z opcją czystej instalacji.

Dotyczy to także laptopów z dwiema kartami graficznymi: program może startować na zintegrowanej karcie ze starym sterownikiem.

6. Napraw pliki systemowe: DISM i SFC

Jeśli błąd pojawia się w wielu programach naraz albo dotyczy bibliotek systemowych na aktualnym Windows 10 lub 11, możliwe, że pliki systemowe są uszkodzone. Microsoft zaleca uruchomienie najpierw DISM, a potem SFC.

  1. Kliknij prawym przyciskiem Start i wybierz Terminal (administrator) lub Wiersz polecenia (administrator).
  2. Wpisz kolejno:
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow
  1. Poczekaj do końca obu skanów (DISM może zatrzymać się na dłużej na 62,3% — to normalne) i uruchom ponownie komputer.

DISM pobiera poprawne pliki z Windows Update i naprawia magazyn składników, a SFC na jego podstawie przywraca uszkodzone pliki systemowe. Więcej przydatnych poleceń znajdziesz w zestawieniu PowerShell — 10 poleceń, które musisz poznać.

7. Przywracanie systemu i naprawa Windows

Jeśli błąd pojawił się nagle po instalacji jakiegoś programu lub aktualizacji, możesz cofnąć system do punktu przywracania sprzed tej zmiany:

  1. Naciśnij Win + R, wpisz rstrui i zatwierdź.
  2. Wybierz punkt przywracania sprzed pojawienia się problemu.
  3. Zatwierdź i poczekaj na restart.

Przywracanie systemu nie usuwa Twoich dokumentów, ale odinstalowuje programy i sterowniki dodane po utworzeniu punktu. Mechanizm opiera się na kopiach migawkowych — jak działają, wyjaśniam w tekście o Volume Shadow Copy (VSS).

Ostatecznością przed formatowaniem jest naprawa systemu z zachowaniem plików i aplikacji. W Windows 11 znajdziesz ją w Ustawienia → System → Odzyskiwanie jako ponowną instalację bieżącej wersji przez Windows Update. Alternatywnie uruchom setup.exe z obrazu ISO tej samej wersji Windows i wybierz zachowanie plików i aplikacji.

Dlaczego nie warto pobierać DLL z internetu

Wyszukiwarka pod hasłem nazwy biblioteki podsuwa strony z „darmowymi plikami DLL” i programy typu „DLL fixer”. To zły pomysł z kilku powodów:

  • nie wiesz, w jakiej wersji jest pobrany plik — a błąd punktu wejścia właśnie z niewłaściwej wersji wynika,
  • plik może być zmodyfikowany i zawierać złośliwy kod, który uruchomi się z uprawnieniami programu,
  • „automatyczne naprawiacze” często same instalują niechciane oprogramowanie albo wyświetlają fałszywe alarmy, żeby sprzedać licencję.

Poprawne biblioteki instaluje się z oficjalnego instalatora programu, pakietu Visual C++ Redistributable, sterownika lub Windows Update. Jeśli mimo to coś pobrałeś, przeskanuj system — i pamiętaj, że żaden antywirus nie wykrywa wszystkich zagrożeń.

Osobna kategoria to gry i programy z nieoficjalnych źródeł. Podmienione biblioteki (np. steam_api64.dll) często nie pasują do nowszej wersji pliku EXE i dają dokładnie ten błąd — a do tego bywają nośnikiem złośliwego oprogramowania.

Co zrobić, jeśli nic nie pomogło

Przejdź jeszcze raz tę listę, w tej kolejności:

  1. Zapisz dokładną treść błędu: nazwę funkcji i pełną ścieżkę DLL.
  2. Biblioteka systemowa (KERNEL32.dll)? Sprawdź wymagania programu i wersję Windows (winver).
  3. Biblioteka Visual C++? Zainstaluj najnowszy pakiet x64 i x86, uruchom ponownie komputer.
  4. Biblioteka spoza folderu programu? Szukaj kolizji w PATH poleceniem where.exe.
  5. Biblioteka sterownika GPU? Najnowszy sterownik od producenta karty.
  6. Błąd w wielu programach? DISM /RestoreHealth, sfc /scannow, a potem naprawa systemu.

Jeśli program jest nowy, a Twój system aktualny, zgłoś błąd producentowi — podając pełną treść komunikatu i wersję Windows. Bywa, że to po prostu wadliwe wydanie aplikacji, a poprawka pojawia się w ciągu kilku dni. Sam mechanizm ładowania bibliotek w trakcie działania programu dobrze wyjaśnia też tekst o tym, czym jest runtime.

~ man faq

Najczęściej zadawane pytania

Co znaczy „nie znaleziono punktu wejścia procedury”?

Program przy starcie szuka w bibliotece DLL konkretnej funkcji. Plik DLL istnieje, ale nie zawiera tej funkcji, bo jest w innej (zwykle starszej) wersji albo system jest zbyt stary dla programu.

Jak naprawić błąd SetDefaultDllDirectories w KERNEL32.dll?

Ten błąd pojawia się w Windows 7 bez aktualizacji KB2533623. Zainstaluj Service Pack 1 i aktualizację KB3063858, która ją zastępuje, albo użyj starszej wersji programu. Długofalowo jedynym sensownym wyjściem jest nowszy system.

Czy mogę pobrać brakujący plik DLL z internetu?

Nie jest to zalecane. Pojedyncze pliki DLL z nieoficjalnych stron bywają w złej wersji lub zainfekowane. Właściwą bibliotekę instaluje się razem z programem, pakietem Visual C++ Redistributable lub aktualizacją Windows.

Czy ten błąd jest groźny dla komputera?

Sam w sobie nie uszkadza systemu ani danych — po prostu uniemożliwia uruchomienie programu. Wyjątkiem jest sytuacja, gdy błąd dotyczy wielu programów naraz, co może oznaczać uszkodzone pliki systemowe.

Czym różni się ten błąd od komunikatu o braku pliku DLL?

Przy braku pliku DLL system w ogóle nie znajduje biblioteki. Przy braku punktu wejścia biblioteka jest na dysku, ale w niewłaściwej wersji, więc naprawa polega na jej aktualizacji, a nie dograniu pliku.

Ten artykuł jest częścią tematu

CZ

$ whoami

Czarek Zawolski

Założyciel i redaktor XAD.pl. Pisze o sieciach, bezpieczeństwie IT, administracji systemami Windows i Linux oraz o sprzęcie, który sprawia ludziom problemy na co dzień.

~ ls ../podobne