将 .NET 对象从 VB6 传递到 .NET 时出现问题

2023-12-06

我们有一个由第三方创建的 .NET dll“A”。它通过 tlb 向我们的 VB6 exe 应用程序公开类。

我们还有自己的 .NET dll“B”,它引用 .NET dll“A”。 “B”还通过 tlb 向我们的 VB6 exe 应用程序公开类。

现在,VB6 应用程序在 VB6 代码中使用任一库中的类都没有问题,直到我们尝试调用“B”中具有“A”参数类型的函数为止。在这种情况下,我们会收到错误 430 或错误提示"unable to cast com object of type 'system.__comobject' to type 'Type.From.Dll.A'"

可能是什么原因造成的?这是正常的吗?


正如你所说,你的问题是不同的NET版本。

在版本 4 中,NET 团队引入了进程内并行执行

这样您就可以在应用程序中运行不同版本的 CLR。

但这不是您想要的,所以我认为您应该使用 app.config 文件关闭此功能:

<?xml version="1.0"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0"/>
    </startup>
</configuration>

请注意,当您使用 VB6 IDE 时,需要 app.config 的进程是 VB6.exe,因此我还将该 app.config 复制到 VB6 文件夹并将其重命名为 VB6.exe.config。看这个答案

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 .NET 对象从 VB6 传递到 .NET 时出现问题 的相关文章

  • COM多线程支持

    第一次使用COM我有这个 COM dll 比如 ABCServer dll 我创建了一个 RCW 并在我的项目中添加了对它的引用 现在 我的应用程序创建了多个线程 每个线程从 COM dll 创建某些类并使用它们 但是 当其他线程正在处理
  • 以编程方式确定是否安装了 COM 库 (.DLL)

    C 中是否有一种编程方式来确定是否已安装特定的 COM DLL 或者这是扫描注册表中的 classId 的问题 我通常所做的 如果我再次需要的话也会这样做 是尝试创建一个您知道位于 COM 库中的类的对象实例 通过 ProgID 或 GUI
  • C# 组件事件?

    我正在尝试编写一个将公开事件的 C 组件 该组件将由非托管 C 应用程序导入 根据一些教程 我想出了这段代码 针对 C 端 namespace COMTest ComVisible true Guid 02271CDF BDB9 4cfe
  • 如何使用 VB6 调用 Windows shell 命令?

    究竟如何使用 VB6 才能像从命令行一样调用任何 Windows shell 命令 例如 一些微不足道的事情 echo foo 操作方法如下 Shell cmd echo foo vbNormalFocus
  • 使用 pywin32com 进行 opc 的内存泄漏

    我很难弄清楚如何解决内存泄漏问题 我认为这可能是 pywin32 的问题 但我不完全确定 我用于读取 写入单个项目的代码似乎工作得很好 但是当使用组函数时 它会慢慢泄漏内存 我怀疑这是来自必须在 server handles 中传递的基于
  • python 的 win32com.client.dispatch() 无法识别注册的 COM 对象

    我正在尝试使用 Python 加载 COM 对象 我正在使用 win32com client Dispatch Name Of Object 加载它 并且 COM 对象已使用 regsvr32 注册 并在 HKLM CLSID 和 HKLM
  • 向用户显示多条验证消息

    在 MS Access 中 如何将从 SELECT 语句检索到的行存储在数组中 并在一个消息框中显示多行 Dim rSEL rSUM rDes As DAO Recordset Dim vItem id vQnty vSum As Inte
  • 传统DLL与COM DLL的区别

    我目前正在学习COM 我发现 COM DLL 是建立在传统 DLL 基础结构之上的 当我们构建COM DLL时 我们仍然依赖传统的DLL导出方法来引导我们到达内部的COM共同类 如果COM是为了在二进制级别重用组件 我认为传统的DLL也可以
  • VB:在 Adob​​e Illustrator、Photoshop 中分配给布尔属性

    在使用 VBA 自动化 Adob e Illustrator CS3 时 我发现分配一个布尔变量 to a 布尔属性结果总是分配 False Dim New Path As Illustrator PathItem Dim v As Boo
  • 从命令行编译 VB6

    有人知道如何从命令行编译 vb6 webclass dll 吗 我正在尝试构建一个用于自动版本构建的工具 但它失败并显示 文件 文件名 中的编译错误 第 xxxx 行 变量未定义 警报 已知错误 http support microsoft
  • CLSIDFromProgID 成功但 CreateInstace 失败!为什么?

    我正在尝试创建 COM 对象的实例 我有实现该接口的类名 并使用 CLSIDFromProgID 获取 CLSID 因此 自从我获得 CLSID 以来 我想从现在开始一切都会好起来的 但是 当我调用 CreateInstance 并传入 C
  • 了解 IServiceProvider 和 QueryService

    谁能解释一下背后的想法IServiceProvider and QueryService 我不明白服务是什么以及它与其他类型的对象或接口有何不同 我看到的解释很少 主要是一些评论here https learn microsoft com
  • 如何在 VB6 中读取子进程的标准输出?

    在VB6中创建进程时 涉及this https stackoverflow com questions 570295 can i spawn a synchronous process in vb6 and retrieve its ret
  • 如何在 VB6 中创建自动完成组合框?

    是否可以使用VB6下默认的ComboBox控件使其成为智能ComboBox 我们假设这些值已填充到组合框中 例如 New Delhi New World New York 我们需要 ComboBox 响应一个默认事件 因此当用户写入 N 时
  • 如何访问UPnP设备的服务?

    设备 贝尔金 WeMo Switch开发环境 Windows 7 上的 MS VC 2010 我正在尝试使用 Windows 中的 C 枚举 UPnP 设备的服务 我有IUPnPDevice指针并可以访问多个属性 我有IUPnPServic
  • 将 HRESULT 转换为可读消息

    任何人都可以提供一些有关如何以编程方式翻译 HRESULT 的信息 http en wikipedia org wiki HRESULT http en wikipedia org wiki HRESULT 值到人类可读的消息 我知道实用程
  • C#4做COM的时候需要调用Marshal.ReleaseComObject吗?

    我有 VS2010 并向我的项目添加了对 COM 库的引用 并且 VS 在项目中嵌入了主要互操作 如果我引用COM库中的对象并且我想快速处理它们而不等待GC 是否需要调用ReleaseComObject Marshal ReleaseCom
  • Interop.Excel 和 Tools.Excel 之间的区别?

    我目前正在开发 Microsoft Excel 的插件 但我对某些事情有点困惑 两者有什么区别Interop Excel and Tools Excel 例如 之间Interop Excel Workbook and Tools Excel
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 获取/发布到 RESTful Web 服务

    我需要从 VB6 对 RESTful Web 服务进行一些 GET 和 POST 操作 最好和最简单的方法是什么 您需要添加对 MSXML 库的引用 Dim sUrl As String Dim response As String Dim

随机推荐