CR SP 25至27-引发异常System.Runtime.InteropServices.SEHException

2020-08-17 09:06发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我将Visual Studio的Crystal报表运行时从SP16升级到最新的SP 27,但是在构建整个应用程序并运行它之后,当我打开Crystal报表时,最终出现一个错误对话框,显示:/p>

调试断言失败! 程序:C:\ WINDOWS \ SYSTEM32 \ mfc140d.dll文件:.../mfc/occsite.cpp行:1007,如果我单击"忽略",它将显示堆栈跟踪信息:

 **************异常文本**************
 System.Runtime.InteropServices.SEHException(0x80004005):外部组件引发了异常。
    在COleControlSite.AttachWindow(COleControlSite *)
    在Microsoft.VisualC.MFC.CWinFormsControlSite.OnHandleCreatedHandler(CWinFormsControlSite *)
    在Microsoft.VisualC.MFC.CWinFormsControlSite.OnHandleCreated(CWinFormsControlSite *,对象A_0,EventArgs A_1)
    在Microsoft.VisualC.MFC.CWinFormsEventsHelper.OnHandleCreated(Object o,EventArgs args)
    在System.Windows.Forms.Control.OnHandleCreated(EventArgs e)
    在System.Windows.Forms.Control.WmCreate(Message&m)
    在System.Windows.Forms.Control.WndProc(Message&m)
    在System.Windows.Forms.UserControl.WndProc(Message&m)
    在CrystalDecisions.Windows.Forms.CrystalReportViewer.WndProc(Message&msg)
    在System.Windows.Forms.Control.ActiveXImpl.System.Windows.Forms.IWindowTarget.OnMessage(Message&m)
    在System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd,Int32 msg,IntPtr wparam,IntPtr lparam)
 

然后我的报告正常启动,好像什么也没发生。

我正在运行VS17,VC可再发行的x64和x86 14.25.28508,.NET Framework 4.8和SP(从25到27)。

如果我安装16到24之间的任何其他SP,它们都可以正常工作。 同样在Wiki上还说,SP21和更高版本支持VS17,因此我期望SP27也能与VS17一起正常工作。.但事实并非如此,因为从SP25开始,它一直为我抛出该异常

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我将Visual Studio的Crystal报表运行时从SP16升级到最新的SP 27,但是在构建整个应用程序并运行它之后,当我打开Crystal报表时,最终出现一个错误对话框,显示:/p>

调试断言失败! 程序:C:\ WINDOWS \ SYSTEM32 \ mfc140d.dll文件:.../mfc/occsite.cpp行:1007,如果我单击"忽略",它将显示堆栈跟踪信息:

 **************异常文本**************
 System.Runtime.InteropServices.SEHException(0x80004005):外部组件引发了异常。
    在COleControlSite.AttachWindow(COleControlSite *)
    在Microsoft.VisualC.MFC.CWinFormsControlSite.OnHandleCreatedHandler(CWinFormsControlSite *)
    在Microsoft.VisualC.MFC.CWinFormsControlSite.OnHandleCreated(CWinFormsControlSite *,对象A_0,EventArgs A_1)
    在Microsoft.VisualC.MFC.CWinFormsEventsHelper.OnHandleCreated(Object o,EventArgs args)
    在System.Windows.Forms.Control.OnHandleCreated(EventArgs e)
    在System.Windows.Forms.Control.WmCreate(Message&m)
    在System.Windows.Forms.Control.WndProc(Message&m)
    在System.Windows.Forms.UserControl.WndProc(Message&m)
    在CrystalDecisions.Windows.Forms.CrystalReportViewer.WndProc(Message&msg)
    在System.Windows.Forms.Control.ActiveXImpl.System.Windows.Forms.IWindowTarget.OnMessage(Message&m)
    在System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd,Int32 msg,IntPtr wparam,IntPtr lparam)
 

然后我的报告正常启动,好像什么也没发生。

我正在运行VS17,VC可再发行的x64和x86 14.25.28508,.NET Framework 4.8和SP(从25到27)。

如果我安装16到24之间的任何其他SP,它们都可以正常工作。 同样在Wiki上还说,SP21和更高版本支持VS17,因此我期望SP27也能与VS17一起正常工作。.但事实并非如此,因为从SP25开始,它一直为我抛出该异常

付费偷看设置
发送
17条回答
木偶小白
1楼 · 2020-08-17 09:48.采纳回答

我做了一些测试,但是我的测试应用程序无法正常工作。

因为它会引发异常,然后继续进行陷阱捕获并忽略它。

< p>按照Ido的建议,更改调试级别。

该文件属于Microsoft,因此请他们询问更改的内容,我怀疑它们已弃用某些东西,MS经常这样做。

Don

CJones
2楼-- · 2020-08-17 09:35

这是从mfc的occsite.cpp文件中抛出错误的函数:

 void COleControlSite :: AttachWindow()
 {
   ENSURE_ARG(m_pInPlaceObject!= NULL);
   HWND hWnd = NULL;
   如果(SUCCEEDED(m_pInPlaceObject-> GetWindow(&hWnd)))
   {
     ASSERT(hWnd!= NULL);
     如果(m_hWnd!= hWnd)
     {
       m_hWnd = hWnd;
       如果(m_pWndCtrl!= NULL)
       {
         ASSERT(m_pWndCtrl-> m_hWnd == NULL); //窗口是否已附加?
         m_pWndCtrl-> Attach(m_hWnd);
         ASSERT(m_pWndCtrl-> m_pCtrlSite == NULL ||
         m_pWndCtrl-> m_pCtrlSite ==此);
         m_pWndCtrl-> m_pCtrlSite = this;
        }
     }
   }
 } 
黑丝骑士
3楼-- · 2020-08-17 09:43

更新CR运行时时,需要从窗体中删除CR Windows查看器,然后重新添加。

SP 25和26中的每个版本都需要3.5 Framework ,因此CR版本是13.0.3500.0

SP 27再次更新为4.0 Framework,我们建议使用4.7或更高版本,CR Framework版本是13.0.4000.0

我就像您不是在更新Project Cr参考并重建应用程序。 否则app.config不会更新为使用最新版本。

代楠1984
4楼-- · 2020-08-17 09:45

这是我的一段代码,当调用CreateNewFrame时会导致该错误出现

 CDocument * pDocument = CreateNewDocument(); 
如果(pDocument == NULL)
{
AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC)​​;
返回NULL;
}
ASSE RT_VALID(pDocument);
_SetDocumentDetails(lpszPathName,pDocument);
BOOL bAutoDelete = pDocument-> m_bAutoDelete;
pDocument-> m_bAutoDelete = FALSE;
CFrameWnd * pFrame = NULL;

> pFrame = CreateNewFrame(pDocument,NULL);
渐行渐远_HoldOn
5楼-- · 2020-08-17 09:34

啊,我刚刚注意到您是使用C ++而不是C#构建应用程序。

我会尝试 但可能是由于C ++依赖关系

Don

shere_lin
6楼-- · 2020-08-17 09:34

Hi Don,

谢谢您的时间。

正如我在第一篇文章中所说,我得到了最新的.NET Framework 4.8。 如前所述,我使用升级版SP27 dll构建了整个应用程序,并且构建良好,这意味着引用均已更新且正确(13.0.4000.0)。 正如我说的,在单击"忽略"后,它会处理异常,并且可以正常启动水晶报表

我唯一缺少的一点是"从您的表单中删除CR Windows查看器,然后重新添加它",我不确定这是什么意思,但是我认为它不会解决我的问题。/p>

如果您还有其他建议,请多多包涵

谢谢

木偶小白
7楼-- · 2020-08-17 09:44

C ++调试起来很麻烦,运行时的调试版本与发行版之间可能有所不同。 看看是否在发布模式下编译并运行时会产生相同的错误。

我现在在节假日休假,直到星期三,并且必须清除事件,这样我才有时间进行测试。

由于它在单击"确定"按钮后起作用,因此我建议尝试捕获该特定异常并忽略它,直到找到原因为止。

一周热门 更多>