MSWORD.OLB未正确注册导致问题现象及解决方法
2014-02-11 09:28
323 查看
问题描述及解决:
程序使用word,在启动程序时出错。通过定位,发现
在执行代码
m_comptrActiveDoc =
CComQIPtr<_Document>(m_Word.get_ActiveDocument());
后m_comptrActiveDoc = NULL,程序未对m_comptrActiveDoc进行判空直接使用导致程序崩溃。
问题是为什么m_comptrActiveDoc 返回NULL。跟进到CComQIPtr的构造函数,构造函数调用了QueryInterface函数。代码如下
CComQIPtr(_In_opt_IUnknown*lp)throw()
{
if (lp !=NULL)
lp->QueryInterface(*piid,(void **)&p);
}
在QueryInterface调用后p为NULL。
后来通过单独执行以下语句
char *p=
NULL;
int nReturn=m_Word.get_ActiveDocument()->QueryInterface(__uuidof(_Document),
(void**)&p);
发现nReturn为TYPE_E_CANTLOADLIBRARY。通过google发现,此种问题可能是MSWORD.OLB在注册表中的注册出现问题,导致此问题的一个可能原因是2003,2007安装卸了装,装了卸载。那么要做的事就是重新注册MSWORD.OLB。注册OLB的工具为regtlibv12.exe(C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe)。在cmd下注册命令为:
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe""C:\Program Files\Microsoft Office\Office12\MSWORD.OLB"
成功界面如下
然后QueryInterface命令执行正确了。
程序使用word,在启动程序时出错。通过定位,发现
在执行代码
m_comptrActiveDoc =
CComQIPtr<_Document>(m_Word.get_ActiveDocument());
后m_comptrActiveDoc = NULL,程序未对m_comptrActiveDoc进行判空直接使用导致程序崩溃。
问题是为什么m_comptrActiveDoc 返回NULL。跟进到CComQIPtr的构造函数,构造函数调用了QueryInterface函数。代码如下
CComQIPtr(_In_opt_IUnknown*lp)throw()
{
if (lp !=NULL)
lp->QueryInterface(*piid,(void **)&p);
}
在QueryInterface调用后p为NULL。
后来通过单独执行以下语句
char *p=
NULL;
int nReturn=m_Word.get_ActiveDocument()->QueryInterface(__uuidof(_Document),
(void**)&p);
发现nReturn为TYPE_E_CANTLOADLIBRARY。通过google发现,此种问题可能是MSWORD.OLB在注册表中的注册出现问题,导致此问题的一个可能原因是2003,2007安装卸了装,装了卸载。那么要做的事就是重新注册MSWORD.OLB。注册OLB的工具为regtlibv12.exe(C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe)。在cmd下注册命令为:
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe""C:\Program Files\Microsoft Office\Office12\MSWORD.OLB"
成功界面如下
然后QueryInterface命令执行正确了。
相关文章推荐
- Visual Studio 2015 Update 1 成功安装后运行 “出现未能正确加载[XXXX]包,此问题可能是由配置更改或安装另一个扩展导致的。” 可能的解决方法
- Spring Cloud 监控服务器下 IP/URL 不正确导致无法注册的解决方法
- 由于数据库ojdbc14.jar版本不正确导致ORA-01461问题的解决方法
- 用友系统由于修改辅助核算导致总账与辅助账对账不平问题解决方法
- 风云防火墙导致无法上网的问题解决(无法获取正确的网关MAC)
- Registering JavaScript object methods as callbacks(注册一个对像方法为回调函数[解决回调函数的上下文问题])
- unable to load dll(由于应用程序配置不正确,应用程序未能起动)问题解决方法
- git提交过程中遇到的 index.lock 问题导致无法提交的解决方法
- 为查看代码和编辑代码而导入工程后导致各种问题解决方法
- 正确的添加图片方法 - 解决UIImageView.image = UIImage(named: String)不显示图像的问题
- html5新特性:利用history的pushState等方法来解决使用ajax导致页面后退和前进的问题
- iconv.decode()导致的问题以及解决方法
- MySQL中配置文件my.cnf因权限问题导致无法启动的解决方法
- 改进动态设置query cache导致额外锁开销的问题分析及解决方法-mysql 5.5 以上版本
- Bmob实现登陆注册,解决官方signUp与Success方法更新后出错问题
- 网络布线跨度过长导致信号延迟问题的解决方法
- RHEL提示RHN没有注册问题的解决方法
- 关于jdk版本问题导致的eclipse导入web项目出错解决方法
- 利用ajax在index页面自动执行方法并显示相关内容,在执行相关按钮操作(如登录注册)后返回index页面后ajax不执行,无法显示相关内容的问题解决方法之一
- 故障的机器修好后重启,狂拉主库binlog,导致网络问题的解决方法