采用VS2017编写C++DLL时,DEGUG调试完好,生成RELEASE后,Dll不能正常运行,查看有一个死循环跳不出来,经过cout输出查看,发现有一个变量一直是0,导致循环不能跳出,事实上此变量是在exe中调用DLL函数时,是赋过>0的值的。反复查找原因,查看到此变量身赋值给自身,如Arg=Arg,原因是之前Arg是千米,程序中写为 Arg=Arg*1000;,后来exe直接赋值为米,就去除了*100;屏蔽此语句 //Arg=Arg后,Release版正常。
造成此错误的原因未明,估计与Release的生成机制有关。特此注明。