【问题标题】:vb6 dll different behavior when debugging调试时vb6 dll的不同行为
【发布时间】:2019-06-28 13:56:20
【问题描述】:

这是很常见的情况,我有大约 2500 个 dll。 所有这些dll都是用vb6制作的。

场景:运行主 .exe 文件并从中调用 .dll。运行 Crystal 报表视图时,它就像一个魅力。

场景 2:通过调试模式运行由 .NET 制作的 .exe 文件是一种魅力。

场景3:通过RUNTIME运行.NET生成的.exe文件,抛出如下异常

描述:进程因未处理的异常而终止。 异常信息:异常代码c0000005,异常地址0F5E6BD0

完整堆栈消息在链接上可用:Full exception message

尝试了两种方法。

  1. 将 .dll 作为引用添加到 .exe

  2. 通过CreateObject添加

这是我的作品之一。

Dim obj As Object
obj = CreateObject("Partneri.clPartneri")

Microsoft.VisualBasic.CallByName(obj, "PrikaziFormu", CallType.Method, cConrADO,
                                         cConADO, False, "", cJezik, rTagovi, rPrevodi, rPrava, 0, 0, cUsername)

请记住:通过调试运行此程序时,一切正常。

我现在使用的唯一解决方法是像 vb6 中的 Create .exe。从 .net exe 调用该 .exe 并将选项名称作为参数传递。在表单加载时,它会设置效果很好的对象。

附加:当运行水晶报告打印负载抛出

【问题讨论】:

  • VB6 仅为 32 位。发生错误时,您的 .NET 应用程序是否以 64 位运行?
  • 我认为你应该尝试这样的事情 stackoverflow.com/questions/52540578/… ,但对于 5000 个 dll,我希望你能得到更好的答案
  • @DaveInCaz 你不会相信我多么期望这会解决这个问题。设置目标 CPU - x86 没有解决它

标签: vb.net crystal-reports vb6 com-interop crystal-reports-2008


【解决方案1】:

您是否尝试过以管理员身份运行 exe 以排除它是否是权限问题? 在调试模式下,您可能以管理员身份运行,但 exe 不会。

我在从 VB6 调用 .NET COM 互操作 dll 时遇到了类似的错误,但这是由于在 .NET 类中使用继承引起的。 或者看起来是这样。

【讨论】:

  • 一开始就试过了。即便如此,它也有本地管理员权限。并且以管理员身份运行它也没有用
  • 尝试添加一些代码以查看对象是否在调用之前创建。该错误表明该对象没有被创建。
猜你喜欢
  • 1970-01-01
  • 2011-12-19
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
相关资源
最近更新 更多