(转)Qt编译程序运行出现“无法定位输入点到_cxa_throw_bad_array_new_lengthyu于动态链接库libstdc++-6.dll上”解决方法
参考:http://blog.csdn.net/carry1beyond/article/details/54880861
问题重现方法:
将QT动态库Qt5.6.1\5.6\mingw49_32\bin路径设置到系统环境变量下,然后运行编译后的程序就会出现这个问题。
原因:
根据参考文章的说法,这个问题是由于动态库libstdc++-6.dll不在运行程序目录下造成的。
解决方法:
将qt动态库目录Qt5.6.1\5.6\mingw49_32\bin下的libstdc++-6.dll文件添加到运行程序目录下,问题即得以解决。
问题后续分析:
再百度搜索libstdc++-6.dll相关经验,说是将该动态库添加到C:\Windows\System32或C:\Windows\System64(根据操作系统位数)也可以解决问题。
亲测该方法确实可以解决该问题。
所以如果只是将qt动态库路径设置到系统环境变量中,还不能让编译程序运行,还需将libstdc++-6.dll添加到相关文件夹下,才能使编译程序运行。
如果没有设置环境变量,而按报错提示将所需动态库一个个添加到程序运行目录下,则不会出现这个问题。
深入分析:
libstdc++-6.dll库是在Qt5.6.1\5.6\mingw49_32\bin目录下的,但设置环境变量后,仍然报错呢?不过请注意报的错误并不是找不到这个文件,而是无法定位程序输入点到该动态库上。根据“问题后续分析”中的解决方法可以看出,这应该跟windows系统运行程序有关。再具体分析则待日后有空再查找资料了。
浙公网安备 33010602011771号