南京软件定制开发

南京倾心软件欢迎您访问本站

13605185909

新闻资讯

NEWS CENTER
栏目导航

企业定制软件开发_关于WPF下ReportViewer导出成PDF时

发布时间:Mar 14, 2022         已有 人浏览
想必有不少朋友做过 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 (在可执行程序目录删除所有的 *.pdb)(放置ReportViewer控件的)后,测试就可以顺利通过,
问题解决了,探讨原因:调试宿主的签名与程序签名不一致,致使某些异常发生,引发这个DLL的调用错误。


Copyright © 2020-2022 南京倾心软件技术有限公司 版权所有     苏ICP备2020070309号-1
QQ在线咨询
13605185909
返回顶部