最近使用一个分词ocx控件时,发现其在某些机器上可以注册成功,但是某些机器上不能注册成功。
执行注册时: regsvr32 xxx.ocx 报错。查看其事件日志,发现问题如下:
Resolve Partial Assembly 为 Microsoft.VC80.DebugCRT 失败。 参考错误消息: 参照的汇编没有安装在系统上。
Generate Activation Context 为 D:/Share/Temp/xocx/aa_xl_word.ocx 失败。 参考错误消息: 参照的汇编没有安装在系统上。
在网上查了一下,最有用的信息来自于下列链接:
http://www.msdns.org/archive/1960/posts/196056989.shtml
简要说,其原因在于Microsoft.VC80.DebugCRT并不存在于要注册的机器上,而该组件是vs2005所带的库文件,所以解决方法有三个:
1. 安装VS2005,这样会将必要的Debug版MSVCR80.DLL 等装到WinSxS目录。
2. 直接将/program files/microsoft visual studio 8/vc/redist/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT及Microsoft.VC80.DebugMFC及其minfest文件拷贝到你的DLL所在目录中。
3. 编译Release版的控件,这样就上述提及的DLL文件。
本人采用第3种方法,ocx注册问题轻松解决。实际上,那些Debug版能注册成功的机器恰好就是装有VS.net的开发机器,所以都装有上述所提及的必要的系统库文件。