Игра Visual Studio 2010 C ++ SDL работает на компьютере, на котором она была скомпилирована, но не на других - PullRequest
0 голосов
/ 19 сентября 2011

Я запрограммировал игру на нолики и кресты в C ++, используя SDL и Visual Studio 2010. Я встроил ее в Release, и она без проблем работает, если я запускаю .exe на компьютере, на котором скомпилировал его (Windows 7 64bit Home Premium).

Я попытался запустить его на своем ноутбуке (Windows 7 x86 Home Premium), и он открывает окно SDL и сразу же закрывается. Я обнаружил, что происходит сбой при загрузке определенного файла, поэтому добавил вывод консоли в код инициализации и выяснил, что этот файл не может быть найден:

if((menuSurface = Surface::Load("gfx/menu.png")) == NULL){
        std::cout << "menu Did not load.";
        system("pause");
        return false;
    }

Особенно это второй загруженный файл, и оригинальный компьютер может найти его нормально.

Проблема, описанная выше, была решена! Я просто забыл добавить дополнительные файлы .dll, поставляемые с sdl_image, такие как zlib1.dll, libpng12-0.dll и т. Д. ... Вторая проблема все еще сохраняется.

Кроме того, на моем компьютере друзей, когда я его запускаю, появляется эта ошибка

TestWin32.exe - Системная ошибка

Программа не может запуститься, поскольку MSVCR100.dll отсутствует в вашем * Компьютер. Попробуйте переустановить программу, чтобы решить эту проблему. *

Я включил файл MSVCR100.dll в ту же папку, что и .exe (вместе с SDl.dll и SDL_image.dll), но все равно не радуюсь. Файл присутствует в его папке SysWOW64, но программа его не берет. Кто-нибудь может увидеть, что может быть причиной этого?

Ответы [ 4 ]

3 голосов
/ 19 сентября 2011

Первая проблема, вероятно, связана с тем, что ресурс находится не в правильном месте.

Вторая проблема заключается в том, что с новыми библиотеками времени выполнения Microsoft C вы не можете просто включить его, вам нужно развернуть соответствующийраспространяемый для Visual Studio 2010.

Вы можете найти, что (x86) здесь. Существует также отдельная версия x64, если вам это нужно.

2 голосов
/ 19 сентября 2011

Это, пожалуй, самый полезный инструмент для определения библиотек, которые вы забыли отправить вместе с вашей программой:

Это былоизначально включается в Windows SDK, но на этом сайте обновлены версии.

1 голос
/ 04 сентября 2012

установите Microsoft RedC ++ Redist на целевой машине, возникли проблемы при попытке скопировать msvcr100.dll/msvcp100.dll.

0 голосов
/ 19 сентября 2011

Узнайте, какие библиотеки DLL исполняются динамически, как в вашей системе разработки, так и в других системах.

Я подозреваю, что загружается некоторая библиотека DLL, которой не должно быть, например, библиотека DLL.в неправильной версии.

...