Помилка роботи з функціями із зовнішніх динамічно завантажених бібліотек

Помилка роботи з функціями із зовнішніх динамічно завантажених бібліотек

Структура бібліотечних ресурсів операційної системи Windows може бути представлена ​​наступним чином:

  • Спочатку на найнижчому рівні спостерігаються "перебої" самої системи, "ноги" з яких ростуть з перших версій Windows, крім того, все, що від цього довгого "старого жінки" MS-DOS ( Так, на цьому рівні майже 30 років у Windows не змінилося). Доступ до цієї бібліотеки легко через асемблер за командою переривання (переривання), отже, «переривання», хоча насправді цей рівень мало відношення до підпрограм переривання переривання.
  • Ми піднімаємось на крок вище, і ми отримуємо до WinSDK - набір програмного забезпечення для розробників з Windows. Це своєрідний аналог усіх тих самих «перебоїв», але вже враховуючи специфіку організації Windows - розробник отримує доступ до цієї бібліотеки через звичний код мови високого рівня, що використовується ним.

Єдина складність полягає в тому, що термінологія опису WinSDK відрізняється від термінології опису найбільш застосованої мови програмування, її функцій (візьміть той самий будівельник або дельфі). На щастя, всі функції WinSDK детально описані у самих розробників (насправді з ними нічого спільного, їх популярність така велика).

Функції WinSDK збираються у файлах динамічно підключених (буквально - завантажених) бібліотек - динамічний лобрей (DLL). Користувача такої бібліотеки не повинен знати адресу функції всередині - достатньо, щоб він знав назву функції і мати впевненість у тому, що функція в бібліотеці є. Вхідні вказівки на функції визначаються в описі самої бібліотеки.

  • Ми також піднімаємося вище, і ми перебуваємо в бібліотеках нагляду над Windows. Однією з найвідоміших надбудови - графічний пакет Directx. Ось однакова організація - все одно файли DLL.

Тут з однією з бібліотек Directx та помилка D3D11 асоціюється.DLL - він зберігає функції відображення об'ємних графічних моделей.

Невеликі роз'яснення

Тут потрібно зрозуміти, що коли просте повідомлення "Помилка D3D11 з’являється на екрані.Dll ", це не дуже правильне повідомлення, воно не точно відображає суть проблеми. Іноді є повідомлення про помилку "може створити пристрій D3D11" - як її виправити, така помилка може допомогти мало.

Точніше, це повідомлення повинно виглядати як "помилка введення функції XYZ, у бібліотеці D3D11.DLL "або простіша -" Функція XYZ у бібліотеці D3D11.DLL не визначений ".

Інша справа, що розробники додатків часто не турбуються про роз'яснення і надають точно просту, "невизначену" версію природи помилки, що виникла. Але це не змінює сутності. Основні причини невдачі - або бібліотека D3D11.DLL відсутній, як опція - D3D11.DLL не був знайдений або не містить необхідної функції, або пошкоджена, щоб функція була недоступною.

Виправлення помилки

Виправлення помилки доступу до функції в D3D11.DLL складається з перестановки самої бібліотеки. Dll - виконуваний код, введіть такий файл, і він не буде працювати, щоб його редагувати. Більше того, файл відноситься до 11 -ї версії пакету DirectX.

Таким чином, перший спосіб усунення помилки - це переставити пакет DirectX 11. Цей метод простий і давно перевіряється, головне - лише знайти робочу версію самої надбудови, найкраще це зробити на офіційному веб -сайті Microsoft.

Інсталяція DirectX у Windows

Інший спосіб - переставити лише сам файл d3d11.DLL. Це можна зробити за допомогою спеціалізованої утиліти DLL-файлів.com, який безкоштовний і доступний на однойменному сайті.

Отже, встановіть та запустіть DLL-файли.

Шукайте файл DLL у програмі DLL-Files.Com

На панелі пошуку ми вводимо "D3D11.Dll ". Після того, як бібліотека знайдеться, ми натискаємо "встановити".

Встановлення файлу DLL у програмі DLL-Files.Com

Якщо ви звикли робити все самостійно, то проблему можна вирішити вручну - це третій спосіб. Щоб використовувати його, завантажте файл D3D11.Dll і помістіть його в потрібну системну папку. Тут потрібно бути обережними, оскільки ця папка в різних версіях Windows різна (у прикладах передбачається, що система встановлена ​​на диску "C:", якщо це не так, то диск повинен бути доречним ):

  • У версіях Windows XP, Vista, 7, 8, 8.1 і 10 - C: \ Windows \ System32;
  • У Windows 95, 98 та Me - C: \ Windows \ System;
  • У Windows NT та 2000 - C: \ Winnt \ System32.

Ми враховуємо - якщо є також версія системи для процесора 64 -ту, то кінцева папка для нашого файлу в будь -якому випадку - "syswow64".

Перепис файлів до папки ще не забезпечує роботи з нею. Тепер його потрібно зареєструвати в реєстрі системи Windows. Для цього ми виконуємо команди через вікно (запуск/головне меню/виконання): regsvr32 d3d11.DLL.

Висновок

Рішення переважної більшості проблем, пов’язаних із зовнішніми динамічно завантаженими бібліотеками операційної системи Windows, часто асоціюється просто з перестановкою самої бібліотеки, або незалежно, або через загальний пакет (у нашому прикладі - Directx 11).

Можна встановити у файлі DLL та вручну, він простим копіює його у потрібну папку. Але, по -перше, вам потрібно знати цю папку. По -друге, такий файл повинен бути зареєстрований у реєстрі системи Windows. Тут ви не можете обійтися без офіційних комунальних служб з реєстру самої системи.

Якщо ви зіткнулися з такою помилкою, тоді напишіть про свій досвід у коментарях.