System error: The program can't start because MSVCP140D.DLL is missing from your computer. Try reinstalling the program to fix this problem
System error: The program can't start because MSVCP140D.DLL is missing from your computer. Try reinstalling the program to fix this problem
所以我在 visual studio 2015 年使用 SFML 编写了一个简单的图形贪吃蛇游戏
它在我的主计算机上运行完美。我认为我应该在我的笔记本电脑上尝试一下。当 运行 程序给了我这个错误:
系统错误:程序无法启动,因为您的计算机缺少 MSVCP140D.DLL。尝试重新安装程序来解决这个问题
所以我在我的电脑上搜索并找到了它,所以我将它复制到我的笔记本电脑上,然后我又收到另一个错误:
应用程序错误:应用程序无法正确启动(0xc000007b)。单击“确定”关闭应用程序。
我尝试重新安装 Microsoft Visual C++ Redistributable,但仍然没有用。 (顺便说一句,这不是代码问题,我已经正确安装了 SFML 并毫无问题地使用了它的库和 bin)。你的帮助对我来说意义重大。谢谢!
这是我的代码:
//
GraphicalLoopSnakeGame.cpp :
Defines the entry point for
the console application.
//
#include "stdafx.h"
#include <SFML/Graphics.hpp>
#include <time.h>
using namespace sf;
int N = 30, M = 20;
int size = 16;
int w = size*N;
int h = size*M;
int dir, num = 4;
struct Snake
{
int x, y;
} s[100];
struct Fruit
{
int x, y;
} f;
void Tick()
{
for (int i = num;i>0;--i)
{
s[i].x = s[i - 1].x;
s[i].y = s[i - 1].y;
}
if (dir == 0) s[0].y += 1;
if (dir == 1) s[0].x -= 1;
if (dir == 2) s[0].x += 1;
if (dir == 3) s[0].y -= 1;
if ((s[0].x == f.x) && (s[0].y == f.y))
{
num++; f.x = rand() % N; f.y = rand() % M;
}
if (s[0].x>N) s[0].x = 0; if (s[0].x<0) s[0].x = N;
if (s[0].y>M) s[0].y = 0; if (s[0].y<0) s[0].y = M;
for (int i = 1;i<num;i++)
if (s[0].x == s[i].x && s[0].y == s[i].y) num = i;
}
int main()
{
srand(time(0));
RenderWindow
window(VideoMode(w, h),
"Snake Game!");
Texture t1, t2, t3;
t1.loadFromFile("images/white.png");
t2.loadFromFile("images/red.png");
t3.loadFromFile("images/green.png");
Sprite sprite1(t1);
Sprite sprite2(t2);
Sprite sprite3(t3);
Clock clock;
float timer = 0, delay = 0.12;
f.x = 10;
f.y = 10;
while (window.isOpen())
{
float time = clock.getElapsedTime().asSeconds();
clock.restart();
timer += time;
Event e;
while (window.pollEvent(e))
{
if (e.type == Event::Closed)
window.close();
}
if (Keyboard::isKeyPressed(Keyboard::Left)) dir = 1;
if (Keyboard::isKeyPressed(Keyboard::Right)) dir = 2;
if (Keyboard::isKeyPressed(Keyboard::Up)) dir = 3;
if (Keyboard::isKeyPressed(Keyboard::Down)) dir = 0;
if (timer>delay) { timer = 0; Tick(); }
////// draw ///////
window.clear();
for (int i = 0; i<N; i++)
for (int j = 0; j<M; j++)
{
sprite1.setPosition(i*size, j*size); window.draw(sprite1);
}
for (int i = 0;i<num;i++)
{
sprite2.setPosition(s[i].x*size, s[i].y*size); window.draw(sprite2);
}
sprite3.setPosition(f.x*size, f.y*size); window.draw(sprite3);
window.display();
}
return 0;
}
您正在使用调试 visual studio 运行时间,如果您想在另一台计算机上尝试它,您应该在发布模式下重新编译您的代码并确保适当的 visual studio 运行安装可再发行组件的时间。
如果您确实需要 运行 在另一台机器上调试可执行文件,您需要确保复制正确的 运行time(32 位或 64 位,具体取决于您的编译方式程序),这可以在 C:\Program Files (x86)\Microsoft Visual Studio19\Professional\VC\Redist\MSVC.24.28127\debug_nonredist
中找到(至少对于 visual studio 2019,具体路径将根据您的 visual studio 版本略有不同,例如 visual studio 2015 使用 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\debug_nonredist
).
据我所知,PC 缺少您程序的运行时支持 DLL。我建议你应该从 MS 站点下载它并确保没有病毒:https://www.microsoft.com/en-US/download/details.aspx?id=48145
应用程序无法正确启动 (0xc000007b)。单击确定关闭应用程序。 首先,我建议使用 dependency walker 测试您的应用程序及其依赖项之间是否存在问题。
然后错误代码表示:0xC000007B STATUS_INVALID_IMAGE_FORMAT。我认为您正在尝试将 64 位 DLL 与 32 位应用程序一起使用(反之亦然)。
所以我在 visual studio 2015 年使用 SFML 编写了一个简单的图形贪吃蛇游戏 它在我的主计算机上运行完美。我认为我应该在我的笔记本电脑上尝试一下。当 运行 程序给了我这个错误: 系统错误:程序无法启动,因为您的计算机缺少 MSVCP140D.DLL。尝试重新安装程序来解决这个问题 所以我在我的电脑上搜索并找到了它,所以我将它复制到我的笔记本电脑上,然后我又收到另一个错误: 应用程序错误:应用程序无法正确启动(0xc000007b)。单击“确定”关闭应用程序。 我尝试重新安装 Microsoft Visual C++ Redistributable,但仍然没有用。 (顺便说一句,这不是代码问题,我已经正确安装了 SFML 并毫无问题地使用了它的库和 bin)。你的帮助对我来说意义重大。谢谢! 这是我的代码:
//
GraphicalLoopSnakeGame.cpp :
Defines the entry point for
the console application.
//
#include "stdafx.h"
#include <SFML/Graphics.hpp>
#include <time.h>
using namespace sf;
int N = 30, M = 20;
int size = 16;
int w = size*N;
int h = size*M;
int dir, num = 4;
struct Snake
{
int x, y;
} s[100];
struct Fruit
{
int x, y;
} f;
void Tick()
{
for (int i = num;i>0;--i)
{
s[i].x = s[i - 1].x;
s[i].y = s[i - 1].y;
}
if (dir == 0) s[0].y += 1;
if (dir == 1) s[0].x -= 1;
if (dir == 2) s[0].x += 1;
if (dir == 3) s[0].y -= 1;
if ((s[0].x == f.x) && (s[0].y == f.y))
{
num++; f.x = rand() % N; f.y = rand() % M;
}
if (s[0].x>N) s[0].x = 0; if (s[0].x<0) s[0].x = N;
if (s[0].y>M) s[0].y = 0; if (s[0].y<0) s[0].y = M;
for (int i = 1;i<num;i++)
if (s[0].x == s[i].x && s[0].y == s[i].y) num = i;
}
int main()
{
srand(time(0));
RenderWindow
window(VideoMode(w, h),
"Snake Game!");
Texture t1, t2, t3;
t1.loadFromFile("images/white.png");
t2.loadFromFile("images/red.png");
t3.loadFromFile("images/green.png");
Sprite sprite1(t1);
Sprite sprite2(t2);
Sprite sprite3(t3);
Clock clock;
float timer = 0, delay = 0.12;
f.x = 10;
f.y = 10;
while (window.isOpen())
{
float time = clock.getElapsedTime().asSeconds();
clock.restart();
timer += time;
Event e;
while (window.pollEvent(e))
{
if (e.type == Event::Closed)
window.close();
}
if (Keyboard::isKeyPressed(Keyboard::Left)) dir = 1;
if (Keyboard::isKeyPressed(Keyboard::Right)) dir = 2;
if (Keyboard::isKeyPressed(Keyboard::Up)) dir = 3;
if (Keyboard::isKeyPressed(Keyboard::Down)) dir = 0;
if (timer>delay) { timer = 0; Tick(); }
////// draw ///////
window.clear();
for (int i = 0; i<N; i++)
for (int j = 0; j<M; j++)
{
sprite1.setPosition(i*size, j*size); window.draw(sprite1);
}
for (int i = 0;i<num;i++)
{
sprite2.setPosition(s[i].x*size, s[i].y*size); window.draw(sprite2);
}
sprite3.setPosition(f.x*size, f.y*size); window.draw(sprite3);
window.display();
}
return 0;
}
您正在使用调试 visual studio 运行时间,如果您想在另一台计算机上尝试它,您应该在发布模式下重新编译您的代码并确保适当的 visual studio 运行安装可再发行组件的时间。
如果您确实需要 运行 在另一台机器上调试可执行文件,您需要确保复制正确的 运行time(32 位或 64 位,具体取决于您的编译方式程序),这可以在 C:\Program Files (x86)\Microsoft Visual Studio19\Professional\VC\Redist\MSVC.24.28127\debug_nonredist
中找到(至少对于 visual studio 2019,具体路径将根据您的 visual studio 版本略有不同,例如 visual studio 2015 使用 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\debug_nonredist
).
据我所知,PC 缺少您程序的运行时支持 DLL。我建议你应该从 MS 站点下载它并确保没有病毒:https://www.microsoft.com/en-US/download/details.aspx?id=48145
应用程序无法正确启动 (0xc000007b)。单击确定关闭应用程序。 首先,我建议使用 dependency walker 测试您的应用程序及其依赖项之间是否存在问题。
然后错误代码表示:0xC000007B STATUS_INVALID_IMAGE_FORMAT。我认为您正在尝试将 64 位 DLL 与 32 位应用程序一起使用(反之亦然)。