Я пытался провести много исследований о том, почему я получаю эту ошибку, и я вижу, что ошибка по существу означает BAD_IMAGE_FORMAT при загрузке 64-битного SDL в 32-битной программе.Однако я, кажется, получаю эту ошибку на ВСЕХ скомпилированных исполняемых файлах.
Небольшая справочная информация: я возился с SDL2 (также используя SDL2_image и SDL2_ttf).Когда я пытался создать простую игру «змейка» с расширением .exe, у меня возникла эта проблема.После некоторых исследований я решил сделать чистую установку mingw, используя 64-битную версию, используя только 64-битные библиотеки разработки для SDL2, SDL2_image и SDL2_ttf.После того, как я все еще не смог запустить .exe из-за кода ошибки 0xc000007b, я решил, что пойду попроще и проработаю каждую библиотеку, чтобы посмотреть, смогу ли я найти, в чем я ошибаюсь.Я начал с использования простой программы «Hello World»:
#include <iostream>
int main(int argc, char* argv[])
{
std::cout << "Hello World" << std::endl;
return 0;
}
с make-файлом:
cmake_minimum_required(VERSION 3.9)
project(HelloWorld)
set(CMAKE_CXX_STANDARD 11)
add_executable(HelloWorld main.cpp)
, который, конечно, создает (как отладку, так и выпуск) и работает без проблем.в Клионе.Тем не менее, при запуске исполняемого файла, который является сборкой, я все еще получаю код ошибки 0xc000007b, и мой исполняемый файл не может запуститься.В этот момент я чувствую, что все начинает становиться немного странным, поэтому я решил пойти с общим предложением, запустив обходчик зависимостей и профилируя мой исполняемый файл.Кажется, для всего (программа SDL2 или простая программа hello world) я получаю ошибку с conhost.exe.Ниже приведено несколько последних заявлений от исследователя зависимостей.
Loaded "CLBCATQ.DLL" at address 0x00007FFFCFC50000. Successfully hooked module.
DllMain(0x00007FFFCFC50000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "CLBCATQ.DLL" called.
DllMain(0x00007FFFCFC50000, DLL_PROCESS_ATTACH, 0x0000000000000000) in "CLBCATQ.DLL" returned 1 (0x1).
onecore\windows\core\console\open\src\host\srvinit.cpp(411)\conhost.exe!00007FF6EA38C372: (caller: 00007FF6EA388CD9) ReturnHr(3) tid(54b4) 80070032 The request is not supported.
onecore\windows\core\console\open\src\server\devicecomm.cpp(153)\conhost.exe!00007FF6EA38A79A: (caller: 00007FFFCF553034) ReturnHr(4) tid(54b4) 800700E9 No process is on the other end of the pipe.
Exited "CONHOST.EXE" (process 0x5150) with code 0 (0x0).
Итак, я прочитал некоторые противоречивые вещи о Conhost, я прочитал, что это вредоносное ПО, но я не думаю, что это так ся, потому что я не вижу, что conhost.exe работает в моем диспетчере задач (и это, кажется, признак того, что есть вредоносная программа).Моя единственная подсказка заключается в том, что conhost ссылается на "Console Window Host".Так что я действительно не уверен, что делать, так как кажется, что я не могу создать какие-либо автономные исполняемые файлы.
Пара примечаний здесь в конце.
Есть убежищене было никаких других проблем с другими исполняемыми файлами на моем компьютере.(или те, которые не созданы мной с помощью Clion)
Я на 64-битной машине (Windows).
HelloПрограмма World работает без каких-либо dll в папке (только HelloWorld.exe).
Я использую Clion.
Программа написанав C ++
edit: в посте я не добавил # перед включением.Чтобы устранить любую путаницу в будущем, я написал вышеприведенный код вручную в посте (не копировал и не вставлял), поэтому, если в этом посте есть небольшие ошибки, их нет в моем реальном коде.