回 帖 发 新 帖 刷新版面

主题:[讨论]新"资源文件版本不匹配"问题

原来我的机上装有多个版本的数据库应用软件(包括VFP),运行正常,最近其中一个软件出错,卸载重装时出现“资源文件版本不匹配”,并弹出“Visual FoxPro cannot start.Could not load resources.”提示。我在网上搜过很多解决方案,都没有用,比如在运行正常机上复制vfp6r.dll、vfp6rchs.dll、vfp6renu.dll到我的系统system32下覆盖等等。敬请高手指点迷津,谢谢!

回复列表 (共6个回复)

沙发

“资源文件不匹配”问题原因分析及解决方法


经常有Foxer提到“资源文件不匹配”问题。先看看:


VFP8R.DLL搜索顺序:
1、应用程序文件夹;
2、注册表(HKEY_CLASSES_ROOT\VisualFoxProRuntime.8\Shell\Open\Command);
3、Windows系统文件夹。


VFP8RCHS.DLL搜索顺序:
   先LoadLibray VFP8RCHS,搜索顺序:
1、应用程序文件夹;
2、Windows系统文件夹;
3、PATH环境变量指定的文件夹。
   如果LoadLibray VFP8RCHS失败,再搜索:
4、注册表(HKEY_CLASSES_ROOT\VisualFoxProRuntime.8\Shell\Open\Command)。


VFP8R.DLL和VFP8RCHS.DLL的搜索顺序不一致,是造成“资源文件不匹配”问题的根本原因。


详细情况:


一、在应用程序文件夹搜索到VFP8R.DLL:

1-1:
┌──────────┬──────┬──────┬─────┐
│搜索到Vfp运行库位置 │ VFP8R.DLL  │VFP8RCHS.DLL│ 匹配结果 │
├──────────┼──────┼──────┼─────┤
│应用程序文件夹      │   1)ok     │   1)ok     │   ok     │
├──────────┼──────┼──────┼─────┤
│注册表              │            │            │          │
├──────────┼──────┼──────┼─────┤
│Windows系统文件夹   │            │            │          │
└──────────┴──────┴──────┴─────┘

1-2:
┌──────────┬──────┬──────┬─────┐
│搜索到Vfp运行库位置 │ VFP8R.DLL  │VFP8RCHS.DLL│ 匹配结果 │
├──────────┼──────┼──────┼─────┤
│应用程序文件夹      │   1)ok     │   1)x      │          │
├──────────┼──────┼──────┼─────┤
│注册表              │            │            │          │
├──────────┼──────┼──────┼─────┤
│Windows系统文件夹   │            │   2)ok     │  error   │
└──────────┴──────┴──────┴─────┘

1-3:
┌──────────┬──────┬──────┬─────┐
│搜索到Vfp运行库位置 │ VFP8R.DLL  │VFP8RCHS.DLL│ 匹配结果 │
├──────────┼──────┼──────┼─────┤
│应用程序文件夹      │   1)ok     │   1)x      │          │
├──────────┼──────┼──────┼─────┤
│注册表              │            │   3)ok     │  error   │
├──────────┼──────┼──────┼─────┤
│Windows系统文件夹   │            │   2)x      │          │
└──────────┴──────┴──────┴─────┘


二、在注册表搜索到VFP8R.DLL:

2-1:
┌──────────┬──────┬──────┬─────┐
│搜索到Vfp运行库位置 │ VFP8R.DLL  │VFP8RCHS.DLL│ 匹配结果 │
├──────────┼──────┼──────┼─────┤
│应用程序文件夹      │   1)x      │   1)ok     │  error   │
├──────────┼──────┼──────┼─────┤
│注册表              │   2)ok     │            │          │
├──────────┼──────┼──────┼─────┤
│Windows系统文件夹   │            │            │          │
└──────────┴──────┴──────┴─────┘

2-2:
┌──────────┬──────┬──────┬─────┐
│搜索到Vfp运行库位置 │ VFP8R.DLL  │VFP8RCHS.DLL│ 匹配结果 │
├──────────┼──────┼──────┼─────┤
│应用程序文件夹      │   1)x      │   1)x      │          │
├──────────┼──────┼──────┼─────┤
│注册表              │   2)ok     │            │          │
├──────────┼──────┼──────┼─────┤
│Windows系统文件夹   │            │   2)ok     │  error   │
└──────────┴──────┴──────┴─────┘

2-3:
┌──────────┬──────┬──────┬─────┐
│搜索到Vfp运行库位置 │ VFP8R.DLL  │VFP8RCHS.DLL│ 匹配结果 │
├──────────┼──────┼──────┼─────┤
│应用程序文件夹      │   1)x      │   1)x      │          │
├──────────┼──────┼──────┼─────┤
│注册表              │   2)ok     │   3)ok     │   ok     │
├──────────┼──────┼──────┼─────┤
│Windows系统文件夹   │            │   2)x      │          │
└──────────┴──────┴──────┴─────┘


三、在Windows系统文件夹搜索到VFP8R.DLL:

3-1:
┌──────────┬──────┬──────┬─────┐
│搜索到Vfp运行库位置 │ VFP8R.DLL  │VFP8RCHS.DLL│ 匹配结果 │
├──────────┼──────┼──────┼─────┤
│应用程序文件夹      │   1)x      │   1)ok     │  error   │
├──────────┼──────┼──────┼─────┤
│注册表              │   2)x      │            │          │
├──────────┼──────┼──────┼─────┤
│Windows系统文件夹   │   3)ok     │            │          │
└──────────┴──────┴──────┴─────┘

3-2:
┌──────────┬──────┬──────┬─────┐
│搜索到Vfp运行库位置 │ VFP8R.DLL  │VFP8RCHS.DLL│ 匹配结果 │
├──────────┼──────┼──────┼─────┤
│应用程序文件夹      │   1)x      │   1)x      │          │
├──────────┼──────┼──────┼─────┤
│注册表              │   2)x      │            │          │
├──────────┼──────┼──────┼─────┤
│Windows系统文件夹   │   3)ok     │   2)ok     │   ok     │
└──────────┴──────┴──────┴─────┘

3-3:
┌──────────┬──────┬──────┬─────┐
│搜索到Vfp运行库位置 │ VFP8R.DLL  │VFP8RCHS.DLL│ 匹配结果 │
├──────────┼──────┼──────┼─────┤
│应用程序文件夹      │   1)x      │   1)x      │          │
├──────────┼──────┼──────┼─────┤
│注册表              │   2)x      │   3)ok     │  error   │
├──────────┼──────┼──────┼─────┤
│Windows系统文件夹   │   3)ok     │   2)x      │          │
└──────────┴──────┴──────┴─────┘


板凳


最常见的情况是:

2-2:
┌──────────┬──────┬──────┬─────┐
│搜索到Vfp运行库位置 │ VFP8R.DLL  │VFP8RCHS.DLL│ 匹配结果 │
├──────────┼──────┼──────┼─────┤
│应用程序文件夹      │   1)x      │   1)x      │          │
├──────────┼──────┼──────┼─────┤
│注册表              │   2)ok     │            │          │
├──────────┼──────┼──────┼─────┤
│Windows系统文件夹   │            │   2)ok     │  error   │
└──────────┴──────┴──────┴─────┘

即:在注册表搜索到VFP8R.DLL,但在Windows系统文件夹优先搜索到VFP8RCHS.DLL,
如果这两个文件版本不一致,就会发生“资源文件不匹配”错误!


“资源文件不匹配”问题解决方法:

    Vfp安装时默认把运行库文件安装到:
    C:\Program Files\Common Files\Microsoft Shared\VFP

    建议同时拷贝到:
    C:\Windows\System32文件夹下
    以避免可能出现的“资源文件不匹配”问题。

3 楼

辛苦了

4 楼

首先感谢CCB2000大侠帮助,因为我的水平很菜,大侠的回复似懂非懂,不知如何处理.另外我再补充一点,我安装VFP数据库能正常运行,只是安装数据库开发的人事工资管理系统时出错,软件安装初期会向SYSTEM32系统文件夹写入VFP9RCHS.DLL和VFP9R.DLL两个文件,这会与系统中哪此文件产生冲突呢.

5 楼

检查:
C:\Program Files\Common Files\Microsoft Shared\VFP\VFP9R*.DLL

C:\Windows\System32\VFP9R*.DLL
是否一致。

如果不一致,拷贝其中一个到另外一个文件夹内(建议保留最新的那个)即可。

6 楼

非常感谢CCB2000的热心指导,我已按上面的方法解决了,希望以后能再有机会请教,谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册