CWebBrowser2 create失败Debug版
发布时间:2020-12-15 06:22:13 所属栏目:百科 来源:网络整理
导读:在MFC中使用OCX控件遇到的一个问题 [问题:] 在一个简单的MFC对话框中嵌入一个OCX控件(如浏览器控件),该控件采用动态方式创建,即调用CWnd::Create()接口生成窗口,在本机运行良好,但是在其它部分机器上运行则出现程序异常,报告occsite.cpp的第161行出
在MFC中使用OCX控件遇到的一个问题
[问题:] 在一个简单的MFC对话框中嵌入一个OCX控件(如浏览器控件),该控件采用动态方式创建,即调用CWnd::Create()接口生成窗口,在本机运行良好,但是在其它部分机器上运行则出现程序异常,报告occsite.cpp的第161行出现错误。当把源程序放到目标机器上重新编译后程序可以正常运行。以下是示例代码: m_pFlashPlayer = NULL;? // 一个FLASH控件的对象指针 CRect rt; GetClientRect(&rt);? //获得区域大小 if (m_pFlashPlayer = new CShockwaveFlash) {? // CShockwaveFlash由FLASH控件添加到PROJECT后 VC自动生成 ?if (m_pFlashPlayer->Create("PP",WS_VISIBLE,rt,this,0)) {? //创建窗口 ? m_pFlashPlayer->SetMovie(str); ? m_pFlashPlayer->Play(); ?} } 这个问题带来的后果是如果要发布该程序到100台机器上,则必须要在100台机器上重新编译一遍程序才能正确执行。 [分析:] 经过测试,发现: 1)该问题只存在于程序DEBUG版本中,在RELEASE版本中不存在该问题。 2)该问题和MFC有关,和所嵌入的控件本身没有任何关系。 经过深入分析,发现:该问题是由于 开发机和目标机使用的MFCO42D.DLL库不匹配引起的 。 [结果:] 经过确认,发现开发机和目标机的运行环境有如下差异:开发机未安装任何VS补丁,MFCO42D库的File Version为6.0.8168.0,Product Version为 6.0.000,而目标机安装了VS6.0 SP5,MFCO42D库的File Version为 6.0.8665.0,Product Version为 6.0.400。 [解决:] 为确保各编码及维护人员使用的MFCO42D.DLL一致,对MFCO42D.LIB和MFCO42D.DLL进行了统一(把.lib和.dll拷贝到程序的当前路径);同时将开发机上的MFCO42D.DLL和执行程序一起发布。 [疑问:] 为何MFCO42D的高版本没有保持向下兼容?是否接口有变? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |