· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [专题] 赛迪网2009年度IT经典最红榜获奖名单揭晓
· [专题] 百度被黑的技术原因 数据泄漏暗藏惊人杀机
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 投票:瑞星漏洞事件 Google遭袭技术细节曝光
· [热点] 黑客盯上个人隐私信息 视频体验IE8智能搜索

Wine安装一些Windows软件的错误以及处理

发布时间:2008.03.24 06:07     来源:赛迪网    作者:korn

1、安装rtx软件

1)安装时,后台会报一些错误:如找不到mfc42u.dll之类的,可以从windows/system32目录拷贝到wine的相应目录。

2)如果是自动构建的wine,则有可能出现 libxml2 support was not present at compile time 的问题,这时需要安装 libxml2-dev 包。

2、安装一些带输入检测的软件如招商证券,会出现包含类似 X11DRV_SetDIBits+0x1f2() in winex11 的错误,这时需要打补丁。打补丁的方法是:

1)下载wine源代码

2)按照以下内容修改文件 wine/dlls/winex11.drv/dib.c b/dlls/winex11.drv/dib.c:

Skipped content of type multipart/alternative-------------- next part --------------
diff --git a/dlls/winex11.drv/dib.c b/dlls/winex11.drv/dib.c
index cec2058..809897e 100644
--- a/dlls/winex11.drv/dib.c
+++ b/dlls/winex11.drv/dib.c
@@ -3861,6 +3861,7 @@ INT X11DRV_SetDIBits( X11DRV_PDEVICE *ph
X11DRV_DIB_IMAGEBITS_DESCR descr;
BITMAP bitmap;
LONG width, height, tmpheight;
+ int nrsrcbytes, dibpitch;
INT result;

descr.physDev = physDev;
@@ -3880,6 +3881,16 @@ INT X11DRV_SetDIBits( X11DRV_PDEVICE *ph

if (startscan + lines > height) lines = height - startscan;

+ /* pointer check */
+ dibpitch = ((width * descr.infoBpp + 31) &~31) / 8;
+ if( descr.compression)
+ nrsrcbytes = 1;
+ else {
+ nrsrcbytes = lines * dibpitch;
+ if( nrsrcbytes < 0) nrsrcbytes = - nrsrcbytes;
+ }
+ if( IsBadReadPtr( bits, nrsrcbytes)) return 0;
+
switch (descr.infoBpp)
{
case 1:
@@ -3926,7 +3937,7 @@ INT X11DRV_SetDIBits( X11DRV_PDEVICE *ph
descr.width = bitmap.bmWidth;
descr.height = lines;
descr.useShm = FALSE;
- descr.dibpitch = ((descr.infoWidth * descr.infoBpp + 31) &~31) / 8;
+ descr.dibpitch = dibpitch;
X11DRV_DIB_Lock( physBitmap, DIB_Status_GdiMod, FALSE );
result = X11DRV_DIB_SetImageBits( &descr );
X11DRV_DIB_Unlock( physBitmap, TRUE );

左边有-号的,删除这一行,左边有+号的,添加这一行。

修改后编译,如果使用debian系统,则可以用以下命令编译:

cd wine
sudo debian/rules clean
sudo debian/rules build
sudo debian/rules binary

3、出现断言失败错误:

text.c: usr32 pellip->under == 0 && pellip->after == 0

时,有可能是乱码导致,配置wine支持中文即可。

(责任编辑:云子)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 业界动态:Ubuntu 8.04(Beta)正式发布 (03-21) · 新闻观察:微软宣布支持Eclipse开源项目 (03-21)
· Sun发布最新服务器产品搭配Ubuntu Linux (03-21) · Ubuntu Linux系统已开始支持SELinux技术 (03-21)
· 实用技巧:在Linux系统中查找文件的方法 (03-21) · Linux 2.6.12内核上加载一个简单的模块 (03-20)
· Linux操作系统下TCP keepalive属性查看 (03-20) · Linux系统下history命令的记录如何删除 (03-20)
· 新手学堂:Linux下C语言编程的注意事项 (03-20) · Linux系统下查看文件调用情况Shell命令 (03-20)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
微软Spark计划:技术点燃梦想
·深度观察:高世代线密集..
·专题:颠覆还是倒退?苹果..
·专题:如何让网络个人信..
专题:动力100——助企业轻松实现立体沟通
·专题:三大运营商"扎堆"..
·专题:谷歌推智能手机Ne..
·直播:2010年中国通信技..
专题:回顾2009 原装耗材与兼容耗材发展
·专题:HP Photosmart Pl..
·专题:超薄超强 戴尔推..
·2009赛迪网年终评选 惠..
无处不挂马 2010年网页挂马大爆发之年
·龙存科技:由BizSpark成..
·易城蓝天宋晨枫:硅谷创..
·采访BizSpark计划创业企..