关于 Winform 下 ReportViewer 打印异常

想必有不少朋友做过 WinForm 下的 ReportViewer 应用,在功能打印和导出PDF时会遇到一个异常:

检测到 PInvokeStackImbalance
Message: 对 PInvoke 函数“Microsoft.ReportViewer.Common!Microsoft.ReportingServices.Rendering.ImageRenderer.CompositionPDF+WindowsGDIWrapper::GetGlyphIndicesW”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。


关于这个问题,MS语焉不详,而其它通过修改DLL引用方法的方式对于 Microsoft.ReportViewer.Common 和 Microsoft.ReportViewer.WinForms 也是无能为力。

近日,本人在测试程序时发现,这个问题总是在调试时发生,而程序发布之后,这个问题就不再出现了。

做了几个小测试,发现,删除  xxxxxx.pdb (放置ReportViewer控件的)后,测试就可以顺利通过,

问题解决了,探讨原因:调试宿主的签名与程序签名不一致,致使某些异常发生,引发这个DLL的调用错误。

转载于:https://www.cnblogs.com/sasbya/archive/2007/12/07/986649.html

各种版本的 文件大小: 3.45M X86/X64: X86 更新时间: 2009-10-6 12:18:40 文件 MD5: 209A03F25704BF9A130B15A85DCD1E30 文件版本: 8.0.50727.42 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 3.48M X86/X64: X86 更新时间: 2010-12-29 19:23:44 文件 MD5: B90FD7B1C731A8A3CC74FD60D0225B3E 文件版本: 9.0.21022.8 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 6.09M X86/X64: X86 更新时间: 2011-1-18 9:39:37 文件 MD5: 7612C2F4483E980377E6B8D2DCB6EA2A 文件版本: 10.0.30319.1 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 3.48M X86/X64: X86 更新时间: 2011-2-11 17:46:02 文件 MD5: 13FCB5B22C28CD62D335B23947B96BCE 文件版本: 9.0.30729.1 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 3.46M X86/X64: X86 更新时间: 2011-2-21 10:02:54 文件 MD5: 24FCC2E088D00DD2D3F6CCEBA063EE76 文件版本: 8.0.50727.1826 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 3.48M X86/X64: X86 更新时间: 2011-3-3 13:25:00 文件 MD5: DF28B32BB9937D37E94A01C5743A7F57 文件版本: 9.0.21022.227 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 3.48M X86/X64: X86 更新时间: 2011-3-11 15:01:50 文件 MD5: 91FE9E471AEDC69F1B04CF98C054F012 文件版本: 9.0.21022.143 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 3.48M X86/X64: X86 更新时间: 2011-3-24 20:55:02 文件 MD5: 1E32B70A6DF512C5422CC09AD819E4C8 文件版本: 9.0.30729.4402 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 6.10M X86/X64: X86 更新时间: 2011-9-15 14:02:20 文件 MD5: 1AB118E292B518FCDBDB4E6DFFD6E859 文件版本: 10.0.40219.1 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 3.46M X86/X64: X86 更新时间: 2011-9-25 18:48:16 文件 MD5: 15A1671D7D5835A65DEB30D1F2ECEF59 文件版本: 8.0.50727.817 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 6.10M X86/X64: X86 更新时间: 2011-10-20 0:35:10 文件 MD5: E4A40E0CF302087E3F6C8EEB6783DE14 文件版本: 10.0.40219.329 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 3.46M X86/X64: X86 更新时间: 2011-12-4 19:52:24 文件 MD5: A7FE69A6D2A67D1DB0CA6168771313CC 文件版本: 8.0.50727.4401 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 3.46M X86/X64: X86 更新时间: 2012-2-3 15:57:05 文件 MD5: 8A63434C449FAB03C303C10FAFEB5DF4 文件版本: 8.0.50727.1843 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 3.48M X86/X64: X86 更新时间: 2012-2-17 8:29:50 文件 MD5: 33E473A27368723808CCFFD94D0ABA4C 文件版本: 9.0.20706.1 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 8.26M X86/X64: X86 更新时间: 2012-3-22 5:44:39 文件 MD5: 230B212023DB7F3C19DE012E7FCB522F 文件版本: 11.0.1750.32 ((SQL_PreRelease).111104-1939 ) 文件描述: Microsoft.ReportViewer.Common.dll 文件大小: 3.46M X86/X64: X86 更新时间: 2012-7-16 10:11:49 文件 MD5: C3D4CE591DEABDA549C25EAB7822D93D 文件版本: 8.0.50727.5677 文件描述: Microsoft.ReportViewer.Common.dll
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值