Як усунути помилку «HRESULT: 0x8007000B»?

Програмісти, що займаються розробкою різного програмного забезпечення в інтегрованому середовищі розробки Microsoft Visual Studio C ++, можуть зіткнутися з такою неприємністю, як помилка 0x8007000B. При її появі перед користувачами може з'явитися віконце з наступним текстом:

Була зроблена спроба завантажити програму, що має невірний формат. (Виняток з HRESULT: 0x8007000B)

Існує неймовірно величезний список причин, через які може виникати код помилки 0x8007000B. Він настільки величезний, що про по ній можна скласти доволі з десяток різних статей.

Спосіб усунення помилки 0x8007000B

У даній статті ми розглянемо одну з ситуацій, при якій може виникати код помилки 0x8007000B. Отже, давайте припустимо, що ви займаєтеся розробкою програми в Visual Studio Express, для нормальної роботи якого потрібно застосування зовнішньої бібліотеки динамічного компонування (DLL-файл). Ви перевірили свій додаток - воно працює на вашій машині.

Далі ви зробили спробу запустити цю програму на комп'ютері іншого користувача або на своїй іншій машині, яка працює на 64-бітної операційної системи. Однак, при запуску перед вами з'явилося неприємне повідомлення «Була зроблена спроба завантажити програму, що має невірний формат. (Виняток з HRESULT: 0x8007000B) ».

У даній ситуації, швидше за все, ви помітили помилку HRESULT: 0x8007000B через те, що зовнішня динамічна бібліотека, до функцій в якій виконується звернення, була скомпільована, щоб працювати під 32-бітними операційними системами. Якщо під час компіляції ви не не встановиться цільову платформу, то додаток буде націлене на роботу під 32-бітної або під 64-бітну операційною системою. Відповідно, 64-бітове додаток зможе працювати тільки з 64-бітними DLL.

Щоб позбутися від помилки 0x8007000B, вам потрібно повернутися в налаштування проекту, після чого поміняти цільову платформу на "x86". Ймовірно, раніше у вас там була обрана настройка «Будь-який ЦП», що і призвело до компіляції x64 додатки. Як тільки ви перекомпіліруете додаток, воно спокійно зможе працювати на будь-якому ПК в 32-бітному режимі, а також у нього з'явиться можливість виробляти звернення до потрібної вам 32-бітної динамічної бібліотеці. Після цього помилка до кодом 0x8007000B буде усунена.

Цікаві Статті