部署一个用Visual studio2019 release x64 编译的程序到其他电脑上,实际项目用到了自定义的库以及第三方库,也包含了opencv。
问题描述:- 由于没有截图,我就简单叙述一下我遇到的问题:
- 我自己电脑上可以运行自己编译的exe程序,但当我把exe所在的整个文件夹拷贝到目标电脑上的时候,发现exe程序并不能运行。一开始报缺少opnecv等dll文件,等我把所有缺失的dll文件拷贝到文件夹下时,本以为问题解决时候,程序直接报错0x000007d。
通过网络查找和询问一些前辈,基本上把问题锁定在运行环境上。
因为一开始程序报错缺失dll文件,而且网上出现类似解决方法就是把缺失dll文件放到exe程序所在文件夹下面,然后就解决问题了。
所以我一开始是怀疑自己的dll版本不对,因为我编译的选项是x64,如果dll版本是32位,那肯定也不能运行。但是我仔细排查后发现并没有下载错。
之后又下载了.net framework、运行库修复程序,但都没能解决问题。当然,在目标机器上安装viusal studio 并编译程序肯定能行,但还是想尝试其他方法。
由于曾经在安装交叉编译环境的时候用到过C++生成工具,所以后来就尝试一波在目的主机上安装它,没想到安装后就解决问题了,什么原理我暂时也每搞懂,不够肯定是跟环境有关。
到Visual studio 官网下载C++生成工具,并在目标主机上安装。
下载链接
拉到网页最下面,点击相应选项并下载。得到一个下载器:
打开后,只选择C++桌面开发:
等待安装结束,再次运行,成功运行!
有些项目需要特殊的dll文件还是要自己去找到并放到exe所在文件夹下面(比如opencv的动态库),如果缺失的是通用的dll文件,这时候要考虑使用一些修复工具。
最后,解决我遇到的这个问题的最重要环节的是c++生成工具的安装,我感觉这就是个全家桶,装完后压根就不必再安装一些修复工具了。
下面的工具是需要积分的,最近缺积分,想捞点。而且下面的工具自己花点时间也能在网上免费获取。
DirectX4.0
Microsoft .NET Framework 4.5.zip
vs_buildtools在线下载器



