关于wine 内置DLL和windows DLL 替换问题?

Wine、Cedega、CrossOver 等配置
回复
xiaoya1
帖子: 10
注册时间: 2016-11-04 19:13
系统: Ubuntu

关于wine 内置DLL和windows DLL 替换问题?

#1

帖子 xiaoya1 » 2016-11-09 17:39

我们知道在执行winecfg的时候,会自动在根目录下创建.wine 的目录,请问.wine/driver_c/windows/system32/ 这个目录下的DLL是怎么来的?我猜想是由usr/local/lib/wine/fakedll/ 拷贝过来的,如果猜想正确的话,那么system32 目录下dll,并不是真正的Windows DLL,而是伪装的DLL?那么问题来了我们在winecfg中配置成native,是不是不起作用?不知猜想正确与否,求大神解决!!!!
头像
astolia
论坛版主
帖子: 6445
注册时间: 2008-09-18 13:11

Re: 关于wine 内置DLL和windows DLL 替换问题?

#2

帖子 astolia » 2016-11-12 15:37

你觉得版权文件wine敢自带么?微软的一大帮律师和外围版权组织可不是光拿钱不干事的。原生(native)的需要你自己从windows下面复制过来。
wine自带的那些dll都是有标记的,能区分出是不是原生的。程序要加载时根据你的设置检查一下,要求原生的就找原生,要求自带的就找自带。
如果你没有提供原生文件又指定了只要native,只会导致找不到dll加载失败
xiaoya1
帖子: 10
注册时间: 2016-11-04 19:13
系统: Ubuntu

Re: 关于wine 内置DLL和windows DLL 替换问题?

#3

帖子 xiaoya1 » 2016-11-15 9:11

astolia, 但是当我只在winecfg进行配置成native的时候,然后打印日志,路径确实是system32 下面呀?还有就是QQ直接用wine好像不能输入,然后只在winecfg中将riched20 配置成native就可以了,那这又是怎么一回事呢?方便的话加我QQ:1350918544交流一下
tuu1
帖子: 47
注册时间: 2016-04-03 15:26
系统: ubuntu14.04

Re: 关于wine 内置DLL和windows DLL 替换问题?

#4

帖子 tuu1 » 2016-11-15 13:52

xiaoya1 写了: 还有就是QQ直接用wine好像不能输入,然后只在winecfg中将riched20 配置成native就可以了,那这又是怎么一回事呢?
在winecfg中设置dll优先级,如果设置成 “仅原生(native)”,而没有替换微软对应的dll文件,就会出错。
然而qq的安装目录下本来就有 riched20.dll 文件,wine-preloader 会自动加载该文件。

【补充一点】
win7系统默认寻找库文件 %CD% > system32 > windir
也就是说 %PATH% 包含当前路径
linux系统默认寻找库文件 /lib > /usr/lib > /usr/local/lib
也就是说 $LD_LIBRARY_PATH 不包含当前目录
头像
astolia
论坛版主
帖子: 6445
注册时间: 2008-09-18 13:11

Re: 关于wine 内置DLL和windows DLL 替换问题?

#5

帖子 astolia » 2016-11-15 14:00

你的QQ是怎么安装的?就算你不知道怎么区分是不是原生dll,你检查过wine和windows下面riched32.dll的文件大小没有?
xiaoya1
帖子: 10
注册时间: 2016-11-04 19:13
系统: Ubuntu

Re: 关于wine 内置DLL和windows DLL 替换问题?

#6

帖子 xiaoya1 » 2016-11-15 14:15

astolia,是这样的,之前对比过system32 下面dll 的大小,由于和fakedll下面的大小是一样的,文件比较小,应该没有具体代码实现,所以之前猜测通过winecfg配置,在.wine/driver_d/windows/system32/下的dll,不是真正的Windows Dll ,如果要真正使用windows Dll 需要手动替换;那如果是假的话为什么仅在winecfg那配置成native,并不进行手动从Windows拷贝,对QQ竟让起作用。
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 关于wine 内置DLL和windows DLL 替换问题?

#7

帖子 lilydjwg » 2016-11-15 14:18

不应该是 riched20.dll 么?

代码: 全选

>>> ll ~/.wine/drive_c/windows/system32/riched20.dll ~/wine/QQLite/drive_c/windows/system32/riched20.dll
-rw-r--r-- 1 lilydjwg lilydjwg  31K 9月  19 12:31 /home/lilydjwg/.wine/drive_c/windows/system32/riched20.dll
-rw-r--r-- 1 lilydjwg lilydjwg 422K 6月  19 2003 /home/lilydjwg/wine/QQLite/drive_c/windows/system32/riched20.dll
xiaoya1
帖子: 10
注册时间: 2016-11-04 19:13
系统: Ubuntu

Re: 关于wine 内置DLL和windows DLL 替换问题?

#8

帖子 xiaoya1 » 2016-11-15 14:20

lilydjwg, 嗯嗯是你说的这个,我写错了
tuu1
帖子: 47
注册时间: 2016-04-03 15:26
系统: ubuntu14.04

Re: 关于wine 内置DLL和windows DLL 替换问题?

#9

帖子 tuu1 » 2016-11-15 15:04

lilydjwg 写了:不应该是 riched20.dll 么
蝈蝈,你在搞啥子哇以?
楼主并没有把riched20.dll复制到system32目录下。
QQ的安装目录下本来就有一个riched20.dll

代码: 全选

>>> ll ~/QQ8.2/drive_c/windows/system32/riched20.dll ~/QQ8.2/drive_c/Program\ Files/Tencent/QQ/Bin/riched20.dll
-rw-r--r-- 1 tuu tuu  31K 9月  19 12:31 /home/tuu/QQ8.2/drive_c/windows/system32/riched20.dll
-rw-r--r-- 1 tuu tuu 422K 6月  19 2003 /home/tuu/QQ8.2/drive_c/Program\ Files/Tencent/QQ/Bin/riched20.dll
xiaoya1
帖子: 10
注册时间: 2016-11-04 19:13
系统: Ubuntu

Re: 关于wine 内置DLL和windows DLL 替换问题?

#10

帖子 xiaoya1 » 2016-11-15 15:14

tuu1,表示在QQ的安装目录下没有riched20.dll
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 关于wine 内置DLL和windows DLL 替换问题?

#11

帖子 lilydjwg » 2016-11-15 15:35

tuu1 写了: 蝈蝈,你在搞啥子哇以?
啥?

QQ 并不带有 riched20.dll。可能是你安装的那个非官方版本的制作方加进去的。
tuu1
帖子: 47
注册时间: 2016-04-03 15:26
系统: ubuntu14.04

Re: 关于wine 内置DLL和windows DLL 替换问题?

#12

帖子 tuu1 » 2016-11-15 18:41

xiaoya1 写了:表示在QQ的安装目录下没有riched20.dll
lilydjwg 写了:可能是你安装的那个非官方版本的制作方加进去的。
我也是乱说,这个是 QQ8.3 官方版,明显自带了riched20.dll
qqdir.png
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 关于wine 内置DLL和windows DLL 替换问题?

#13

帖子 lilydjwg » 2016-11-15 20:03

咦,新版本的 QQ 还真自带了微软的库啊……难道是因为 Win 10 的原因?
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 关于wine 内置DLL和windows DLL 替换问题?

#14

帖子 lilydjwg » 2016-11-15 20:13

不知道腾讯在搞什么,它自带的这个 riched20.dll 原名 msftedit.dll,版本 5.0。签名时间是十一年前。Win10 自带的那个原名 riched20.dll,版本 3.1。Office 自带的又是另一个……
回复