最近项目中用到了VC++ DLL,在本机调试时无任何问题,但是发布出来后,COPY到另外的机器就报错,说找不到DLL,由于自身工作接触这方面比较少,经过一番折腾后,终于解决,以下为解决步骤
一,平台工具集(最终没选这个发布后也可以运行,选的VS 2015(V140),但是C++相关的工具是必须要装的),就选了Visual Studio 2015 - Windows XP (v140_xp),如图
接下来生成项目报错,C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(1407,5): error MSB6006: “rc.exe”已退出,代码为 5。经过搜索,发现可能是C++相关的工具没有安装,于是找到VS安装程序,修复,如下图
然后漫长等待,安装完成。
二,VS C++可发行组件包
生成成功了,满心欢喜的拿到其它机器运行,接下来又是一盆冷水。发现运行不起,提示找不到相应的DLL,又经过无数的找资料,需要两点,一是发布时必须要以Release版本来发布,用Debug版本是不行的(因为含了本机特定的一些调试信息),二是需要目标机器安装开发环境对应的C++组件包,比如我使用的是VS2015开发的C++类库,目标运行环境机器上就要安装Microsoft Visual C++ 2015 可再发行组件包 (x86),注意区分我们的目标程序是32位还是64位,那么也要装对相应的可发行组件包,组件包的地址可以自行百度,微软的官网上有,百度第一条就是。
三,C++类库的默认优化(这个坑也比较大)
我在类库中定义了两个变量,但是发布后发现变量值为空,始终找不到什么原因,问朋友后,他告诉我是被优化掉了,那么找到问题了,马上解决,如图:
选择已禁用。
至此,问题解决,发布后,将程序COPY到03,WIN7,08的系统上都可以正常使用了。