qt程序在不同电脑跑的反映不一样

时间:2022-04-03 15:56:18
问题是这样的,我的电脑是win7 64位,写个程序一切正常,然后动态编译带上dll文件传给其他没有qt环境的同学,两个是32位win7,一个是32位xp,他们可以运行起来,但是win7是一点开始程序就会自己退出,xp是一点开始就会提示该内存不能为read。

然后我在电脑上安装了一个虚拟机,安装了两个32位xp,让程序分别在两个虚拟机跑,结果一样。一点运行按钮,程序提示该内存不能为read。

然后在其中一台虚拟机上安装qt开发离线开发包,程序就变正常了!!!

然后把这台虚拟机的qt开发包下的 Desktop\Qt\4.7.3\mingw\  下整个bin目录打包,传给另外一台虚拟机,把程序放在bin目录

里,结果还是 一点运行就会提示该内存不能为read。

还会是什么原因。。。

14 个解决方案

#1


不是指针乱指 就是什么都没指。
所以才会有 : XP的弹错误,Win7的直接崩溃了。

#2


楼主应该编写一个最简单的qwidget程序,试一下。

#3


引用 1 楼 dext 的回复:
不是指针乱指 就是什么都没指。
所以才会有 : XP的弹错误,Win7的直接崩溃了。

为什么一安装QT环境就正常了....

#4


引用 2 楼 mitiao 的回复:
楼主应该编写一个最简单的qwidget程序,试一下。

我回去实验下。。

#5


引用 2 楼 mitiao 的回复:
楼主应该编写一个最简单的qwidget程序,试一下。

楼主应该向2楼学习这种解决问题的方法

#6


引用 5 楼 xiachm 的回复:
引用 2 楼 mitiao 的回复:

楼主应该编写一个最简单的qwidget程序,试一下。

楼主应该向2楼学习这种解决问题的方法

可以正常跑起来

#7


已经解决。。。修改为以下正常。。。。再定位不到这个地方了。

QByteArray bytearray=MainWindow::reply->readAll();
    QString html("");
    if(!bytearray.isEmpty() && !bytearray.isNull()){
        html=QString::fromLocal8Bit(bytearray);
    }

原来是:

QString html(MainWindow::reply->readAll());


奇怪的是,我的电脑不报错,没装qt环境的报错。

#8


引用 7 楼 smileanyplace 的回复:
已经解决。。。修改为以下正常。。。。再定位不到这个地方了。
C/C++ code

QByteArray bytearray=MainWindow::reply->readAll();
    QString html("");
    if(!bytearray.isEmpty() && !bytearray.isNull()){
        html=QString:……

你不会是使用了 QTextCodec::setCodecXXXXX这种东西,同时又忘记发布插件了吧?

#9


引用 8 楼 dbzhang800 的回复:
引用 7 楼 smileanyplace 的回复:

已经解决。。。修改为以下正常。。。。再定位不到这个地方了。
C/C++ code

QByteArray bytearray=MainWindow::reply->readAll();
QString html("");
if(!bytearray.isEmpty() && !bytearray.……

真的就是这句话有问题!!该是什么插件呢?
我在程序中插入了好多 改变状态栏 标志的语句,最终定位到是QTextCodec::->toUnicode的错
我带的是
QtCore4.dll
QtGui4.dll
libgcc_s_dw2-1.dll
QtNetwork4.dll
mingwm10.dll

其他电脑能跑,但是就是执行到QTextCodec::->toUnicode(reply->readAll())会报空指针错误,但是在安装qt环境的电脑是很正常的。

那么还要带什么插件呢?

#10


静下心去看看这个:

http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html

#11


引用 10 楼 dbzhang800 的回复:
静下心去看看这个:

http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html

受教了。正在看。

#12


受教了。正在看。

#13


楼主,我也遇到过,一般都是DLL没有带上,你可以Release一下,然后带上需要的DLL,比如说,你用到了jepg、bitmap就要带上图形库的DLL

#14


找了好几天终于找到了原因,为什么用 qtextcodec -> toUnicode() 就错??

#1


不是指针乱指 就是什么都没指。
所以才会有 : XP的弹错误,Win7的直接崩溃了。

#2


楼主应该编写一个最简单的qwidget程序,试一下。

#3


引用 1 楼 dext 的回复:
不是指针乱指 就是什么都没指。
所以才会有 : XP的弹错误,Win7的直接崩溃了。

为什么一安装QT环境就正常了....

#4


引用 2 楼 mitiao 的回复:
楼主应该编写一个最简单的qwidget程序,试一下。

我回去实验下。。

#5


引用 2 楼 mitiao 的回复:
楼主应该编写一个最简单的qwidget程序,试一下。

楼主应该向2楼学习这种解决问题的方法

#6


引用 5 楼 xiachm 的回复:
引用 2 楼 mitiao 的回复:

楼主应该编写一个最简单的qwidget程序,试一下。

楼主应该向2楼学习这种解决问题的方法

可以正常跑起来

#7


已经解决。。。修改为以下正常。。。。再定位不到这个地方了。

QByteArray bytearray=MainWindow::reply->readAll();
    QString html("");
    if(!bytearray.isEmpty() && !bytearray.isNull()){
        html=QString::fromLocal8Bit(bytearray);
    }

原来是:

QString html(MainWindow::reply->readAll());


奇怪的是,我的电脑不报错,没装qt环境的报错。

#8


引用 7 楼 smileanyplace 的回复:
已经解决。。。修改为以下正常。。。。再定位不到这个地方了。
C/C++ code

QByteArray bytearray=MainWindow::reply->readAll();
    QString html("");
    if(!bytearray.isEmpty() && !bytearray.isNull()){
        html=QString:……

你不会是使用了 QTextCodec::setCodecXXXXX这种东西,同时又忘记发布插件了吧?

#9


引用 8 楼 dbzhang800 的回复:
引用 7 楼 smileanyplace 的回复:

已经解决。。。修改为以下正常。。。。再定位不到这个地方了。
C/C++ code

QByteArray bytearray=MainWindow::reply->readAll();
QString html("");
if(!bytearray.isEmpty() && !bytearray.……

真的就是这句话有问题!!该是什么插件呢?
我在程序中插入了好多 改变状态栏 标志的语句,最终定位到是QTextCodec::->toUnicode的错
我带的是
QtCore4.dll
QtGui4.dll
libgcc_s_dw2-1.dll
QtNetwork4.dll
mingwm10.dll

其他电脑能跑,但是就是执行到QTextCodec::->toUnicode(reply->readAll())会报空指针错误,但是在安装qt环境的电脑是很正常的。

那么还要带什么插件呢?

#10


静下心去看看这个:

http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html

#11


引用 10 楼 dbzhang800 的回复:
静下心去看看这个:

http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html

受教了。正在看。

#12


受教了。正在看。

#13


楼主,我也遇到过,一般都是DLL没有带上,你可以Release一下,然后带上需要的DLL,比如说,你用到了jepg、bitmap就要带上图形库的DLL

#14


找了好几天终于找到了原因,为什么用 qtextcodec -> toUnicode() 就错??