Грешка в работата с функции от външни динамично заредени библиотеки

Грешка в работата с функции от външни динамично заредени библиотеки

Структурата на библиотечните ресурси на операционната система на Windows може да бъде представена, както следва:

  • Отначало, на най-ниското ниво има „прекъсвания“ на самата система, чиито „крака“ растат от първите версии на Windows, освен това, всичко-от тази дългогодишна „стара жена“ MS-DOS ( Да, на това ниво има почти 30 години в Windows не се е променило). Достъпът до тази библиотека е лесно чрез асемблера по командването на прекъсване (прекъсване), оттук и „прекъсването“, въпреки че всъщност това ниво има малко отношение към подпрограмите на прекъсващата обработка.
  • Издигаме се с една стъпка по -високо и стигаме до WinSDK - набор от софтуер за разработчици от Windows. Това е един вид аналог на всички същите „прекъсвания“, но вече като се вземат предвид спецификата на организацията на Windows - разработчикът получава достъп до тази библиотека чрез обичайния код на езика на високо ниво, използван от него.

Единствената трудност е, че терминологията на описанието на Winsdk се различава от терминологията на описанието на най -прилагания език за програмиране, неговите функции (вземете същия строител или Delphi). За щастие, всички функции на 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. Тук не можете да правите без официални комунални услуги да работите с регистъра на самата система.

Ако сте се сблъскали с такава грешка, пишете за опита си в коментарите.