我已经使用SDL和Visual Studio 2010在C ++中编写了一个游戏和交叉游戏。我已经在Release中构建它并且如果我在我编译它的计算机上运行.exe它没有问题(Windows 7 64bit Home高级)。
我尝试在笔记本电脑上运行它(Windows 7 x86 Home premium),然后打开一个SDL窗口并立即关闭。我发现它在加载特定文件时崩溃,因此在初始化代码中添加了一个控制台输出,结果发现它找不到这个文件:
if((menuSurface = Surface::Load("gfx/menu.png")) == NULL){
std::cout << "menu Did not load.";
system("pause");
return false;
}
特别是这是加载的第二个文件,原始计算机可以找到它。
上面的问题已经解决了!我只是忘了添加sdl_image附带的额外.dll文件,如zlib1.dll,libpng12-0.dll等......第二个问题仍然存在。
此外,在我的朋友计算机上运行时,它会出现此错误
TestWin32.exe - 系统错误
程序无法启动,因为中缺少MSVCR100.dll *电脑。尝试重新安装该程序以解决此问题。*
我将MSVCR100.dll文件包含在与.exe相同的文件夹中(以及SDl.dll和SDL_image.dll),仍然没有任何乐趣。该文件存在于他的SysWOW64文件夹中,但该程序没有将其提取。任何人都可以看到可能导致这种情况的原因吗?
答案 0 :(得分:3)
第一个问题可能是资源不在正确位置的问题。
第二个问题是,使用新的Microsoft C运行时DLL,您不能只包含它,您需要为Visual Studio 2010部署适当的可再发行组件。
你可以找到(x86)here.如果你需要它还有一个单独的x64版本。
答案 1 :(得分:2)
答案 2 :(得分:1)
在目标计算机上安装microsoft vc ++ redist,在尝试复制msvcr100.dll/msvcp100.dll
时遇到了麻烦。
答案 3 :(得分:0)
找出您的可执行文件在您的开发系统和其他系统上动态加载的DLL。
我怀疑正在加载一些不应该加载的DLL,例如库的DLL版本错误。