请参考:
http://
六、“资源文件不匹配”原因分析:
VFP9R.DLL的搜索顺序:
1、应用程序文件夹,
2、注册表(HKEY_CLASSES_ROOT\VisualFoxProRuntime.9\Shell\Open\Command),
3、Windows系统文件夹。
VFP9RCHS.DLL的搜索顺序:
先LoadLibrary VFP9RCHS,搜索顺序:
1、应用程序文件夹,
2、Windows系统文件夹,
3、PATH环境变量指定的文件夹。
如果LoadLibrary VFP9RCHS失败,再搜索:
4、注册表(HKEY_CLASSES_ROOT\VisualFoxProRuntime.9\Shell\Open\Command)。
VFP9R.DLL和VFP9RCHS.DLL的搜索顺序不一致,是造成“资源文件不匹配”问题的根本原因。
最常见的情况是:
┌──────────┬──────┬──────┬─────┐
│搜索到VFP运行库位置 │ VFP9R.DLL │VFP9RCHS.DLL│ 匹配结果 │
├──────────┼──────┼──────┼─────┤
│应用程序文件夹 │ 1)x │ 1)x │ │
├──────────┼──────┼──────┼─────┤
│注册表 │ 2)ok │ │ │
├──────────┼──────┼──────┼─────┤
│Windows系统文件夹 │ │ 2)ok │ error │
└──────────┴──────┴──────┴─────┘
即:在注册表搜索到VFP9R.DLL,但在Windows系统文件夹优先搜索到VFP9RCHS.DLL,
如果这两个文件版本不一致,就会发生“资源文件不匹配”错误!
“资源文件不匹配”问题解决方法:
VFP安装时默认把运行库文件安装到:
C:\Program Files\Common Files\Microsoft Shared\VFP
建议同时拷贝到:
C:\Windows\System32文件夹下
以避免可能出现的“资源文件不匹配”问题。
VFP C++编译软件已经把VFP9R.DLL的搜索顺序调整为:
1、应用程序文件夹,
2、Windows系统文件夹,
3、注册表(HKEY_CLASSES_ROOT\VisualFoxProRuntime.9\Shell\Open\Command)。
这样VFP9R.DLL和VFP9RCHS.DLL的搜索顺序一致,可以避免出现“资源文件不匹配”问题。