【错误】vs 应用程序无法正常启动0xc00007b

在用到一个三方库的时候,因为很早之前编译了32位和64位的版本。

今天在打开很早之前的项目的时候,突然不能使用。

0.1先是显示缺少 hv.dll,这个比较有经验,直接复制了一份到可执行文件目录下面。当然也可以修改环境变量。

0.2然后又显示:

0.3根据网上提示,检查了系统。没有问题。而且其他项目可以运行,说明应该不是系统的原因。

0.4然后看到有讲版本不一样的问题,这个时候想起来当时有两个版本,然后确定了一下,找了个32位的dll复制到exe目录下面就解决了。

1、dll和lib32位或者64位不匹配

一般我们都能正确配置lib,使lib和我们的编译生成环境的位数相同,否则就会报错,显示无法找到lib。但是如果dll位数不同,我们虽然能编译成功,但是因为dll是动态链接库,只有运行exe的时候,才会根据路径去链接dll,如果dll和你exe要求的位数不同,就会报出000007b的错误。

2、dll放置路径错误

dll正确的放置路径:放置在exe同一个文件夹内,或者放置system32和sysWOW64里面,这里需要注意的是system32放的是64位的dll,而sysWOW64放置的是32位的dll,如果颠倒的话可能也会出错。

3、directX的问题

网上很多都会提到DirectX的问题,如果系统没有安装,也会出现000007的错误,建议去网上下载一个进行安装。

4、dll和lib与你的系统环境不兼容

我的系统是win10、64位,在保证上述这几个问题都解决的情况下,程序仍然报出000007b的错误。我直接编译了一个dll文件,测试发现和exe链接是没问题的,所以猜测是兼容性的问题。于是使用cmake从网上下载源码,编译生成lib和dll文件,加入程序后成功运行。因此建议尽量不要直接下载官网编译好的库,多用cmake编译自己,可以避免很多不必要的错误浪费时间。

猜你喜欢

转载自blog.csdn.net/m0_57168310/article/details/129278155
今日推荐