Visual studio 2012 报错 0xc000007b
- 背景
- 解决方案
- 罪魁祸首tecio.dll
背景
移植课题组的CFD code构建新的工作环境。拷贝VS2012的C++工程文件到新电脑上,Cmake后得到新的工程文件,debug调试和release运行都报错0xc000007b。根据网上的解决方案折腾一圈,最后通过一点点思索,解决了这个问题。结论,和网上主流说法一致,缺少动态链接库dll。
解决方案
首先给出解决方案。这种报错一般是缺少重要的动态链接库或者动态链接库链接出错(win32的程序链接64位版本的dll或者相反)。我的问题是前者。如何确定到底缺少哪个dll文件呢,首先要知道可执行文件exe依赖哪些dll。
查询exe依赖的dll可以参考链接: https://blog.csdn.net/jirryzhang/article/details/53816577.在这里简单介绍一下:
- 打开 开始->所有程序->Microsoft Visual Studio 20xx ->Visual Studio命令提示(20xx),其中xx表示你的VS版本,如下:
- 使用dumpbin /dependents 命令查看test.exe文件的依赖项:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC>dumpbin /dependents F:\test.exe
通过以上两步已经可以看到程序依赖的dll,以我的结果为例:
接下来在电脑上逐个检索这些dll文件,一般情况下在C:\Windows\System32和C:\Windows\SysWOW64中都应有相应文件,分别是32位版和64位版本。如果没有,那么恭喜,问题找到,从网上下载相应的dll文件放在上面的文件夹中即可。
这里介绍一个文件搜索神器everything,比window的文件资源管理器搜索快多了,秒出结果。
多说一句,如果经过搜索dll在相应的文件夹中都能找到,那么很可能是VS的项目属性设置出问题了。比如32位的程序想要链接64位的dll。在附加库目录中确认文件夹地址中包含的是32位版本的lib。
罪魁祸首tecio.dll
这次问题的罪魁祸首就是tecio.dll文件,这里简单介绍一下。简单的搜索可以知道它是tecplot的产品,tecplot的介绍页在这里https://www.tecplot.com/products/tecio-library/。
TecIO库文件允许第三方程序来读写Tecplot格式的文件。包含了一个简单易用的API来写SZL文件。最新的TecIO支持64位索引,允许单个zone包含超过20亿个节点。将结果写成二进制的szplt文件,相比ASCII码,可以减小存储,加快tecplot后处理的读写速度。
本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2012anzhuangwenti/2020/0725/4388.html