Это определенно самая странная ошибка, с которой я долго бился головой ...
У меня очень простой .exe на Windows 10, который я скомпилировал сам, используя MSVC и библиотеку Allegro (которая использует DirectX). Источник ниже на случай, если детали как-то важны, но суть:
- DirectDraw выдает ошибку времени выполнения, когда я запускаю код.
- Если я переименую исполняемый файл, ошибка исчезнет, и программа будет успешно выполнена.
- Если я переместу исполняемый файл в другую папку или переименую папку, программа запустится успешно.
- Если я переименую исполняемый файл / папку обратно в исходные имена, ошибка вернется.
В папке нет других файлов. Единственное, о чем я могу думать, это то, что Windows каким-то образом ищет абсолютный путь к исполняемому файлу и ведет себя по-разному в зависимости от этого значения (кеширует некоторую информацию о совместимости?)
Есть идеи, что происходит? На практике я могу просто переименовать исполняемый файл и продолжить свой день, но теперь мне действительно интересно, почему происходит такое поведение ...
PS: код точно такой, используя библиотеку Allegro 4.4.
#include "allegro.h"
int main(int argc, char **argv)
{
allegro_init();
set_color_depth(8);
set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0);
exit(0);
}
END_OF_MAIN()
Когда я запускаю код, я получаю сообщение об ошибке (E_NOIMPL) при попытке установить режим видео.