用VS2017编译的C++程序,win7 64位下运行正常,如图1
win10 64位下,同样的程序、配置,在memcpy函数处报错,如图2
在几个win7系统、win10系统中能重现以上错误。
另,我之前遇到一个问题,也是该段程序,用vs2008编译的,在win7、win10上运行都正常,当升级到vs2017后,在win7上运行正常,win10上出现同样的错误。
在这里,m-pImageBuff的大小是lImagesize,psrcimagebuff的大小不知道怎么计算?
缺少vc++运行时
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
lImageSize比pSrcImageBuff的长度大了,可能是处理图像的二进制有\0
debug报错,release不报错,又是拷贝这块,那么基本可以确定就是数组越界了,你的目标数组分配空间比拷贝数组的要小,可以好好检查一下数组大小,进行一下比较
: 打开一个QT程序,以release方式运行一次。操作如下图:
这时你的工程项目文件夹下,会生成一个关于release的文件夹:
:打开关于release相关的文件夹,找到该目录下release目录下的.exe程序。此时你点击是运行不成功的。因为缺少QT必要的库文件。将这个.exe文件拷贝出来,创建一个单独的文件夹,放在这个文件夹下。
:在win10下,搜索MVSC,如下图:接着输入命令行,输入你的打包路径如D:\ ,cd 路径(指的是需要打包的exe程序目录,就是刚才拷贝出来的exe程序所在的目录),回车后:
输入如下命令行:windeployqt 程序名.exe 回车。这一步操作是将所需的库文件全都拷贝到exe程序的当前文件:
打开运行Enigma Virtual Box:
点击界面的增加按钮–>增加文件夹(递归)如下图。选择增加文件夹,使用 %DEFAULT FOLDER%
在文件选项中可以选择是否将文件压缩:
然后点击执行封包。
封装完后将文件拷贝发布,由于Qt自带的库比较多打包完有100多M。
拷贝到windows7电脑运行。成功运行。