1、创建的工程Debug x64运行正常,Release x64程序生成正常,但是软件执行某一操作时会报一下错误,
在这里插入图片描述
查询网上的说法,基本是说是因为assert的原因,但是release的工程中已经存在-DNODEBUG了,
在这里插入图片描述
assert应该就不会有问题了,那这个问题是怎么导致的呢,VS是可以进行查询的,在Release x64的设置下,点击启动运行,进行能触发这个弹窗的操作,弹出这个窗口后,点击重试,这个时候程序会跳到一个你很陌生的地方,并且说触发了一个断点,这个时候打开调用堆栈这个窗口,能够看到具体是哪个函数引发的错误
在这里插入图片描述
2、我的代码中引发这个错误的函数,其实是我调用的一个dll库函数,查看了一下这个dll,发现这个dll生成的是debug模式,并且这个函数中会调用assert,这样就导致了错误,重新生成了release版本的dll,放入工程就解决了这个问题,而调用的lib是不区分debug、release的;
3、解决这种问题关键:去vs的调用堆栈窗口查询是哪个函数导致,另外一定要注意release代码的dll一定也要是release版本。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐