背景:公司又一个很NB的客户,用本公司的软件又不想安装vc库,又要用来宾账户执行,刚收到这个消息,我是很气愤的…… 软件是用VS2015开发。
解决客户方法:
一、静态编译:
此方法可以满足客户的不想安装需求,但软件相对来说比较大一些,各种外部调用的dll和exe多达20个左右,而且部分dll还无源码,排除…
二、将依赖的vc库加载进去:
1.可以使用工具Depends查看所有的exe和dll依赖哪些库,然后将依赖的库都拷贝出来到文件夹下;
2.更简单的办法就是直接用VS的RemoteDebug目录下的所有dll,微软本身也考虑到远程调试的电脑可能不想那么麻烦的去安装VC库,所有就把依赖的库都包含进去,你可以直接去copy;
三、权限问题
编译的时候不要选择Administrator编译,属性--》Configuration属性---》Linker--->Manifest File-->UAC Execution Leve--> asInvoker;
标题的错误原因,其实只是缺少一个ucrtbase.dll,拷贝进去即可;