使用 COM Interop 的 VB6 应用程序在 IDE 中工作正常,但编译后的 EXE 崩溃

2024-02-18

我目前正在开发一个 VB6 中的应用程序,该应用程序使用使用 .NET 2.0 框架用 C# 编写的 COM 互操作库。

我使用 regasm.exe 使用 /codebase 开关从 .NET dll 注册 tlb 文件。然后,我能够在 VB6 IDE 中成功构建并运行该应用程序,没有出现任何问题。 .NET 代码使用配置文件,因此我将其添加到 VB6 目录中,并且它可以很好地读取配置。

不过,我随后从项目中编译了一个 EXE 文件,并在运行 IDE 的同一台计算机上运行它。我将 EXE 与配置文件结合起来,就像使用 VB6.EXE 进行调试一样,但是当应用程序第一次调用其中一个 .NET 类中的方法时,它会抛出一个运行时错误,指示“自动化错误”。

在我的声明中,我实例化了 .NET 类中的以下对象,这似乎工作正常。

Private objSession As New Session
Private curFolder As Folder
Private colFolderTemplates As New FolderTemplateCollection
Private objLicense As New License

但是,当执行第一行时,在运行时会出现自动化错误:

Call objSession.Configuration.Configure(connectionString)

我尝试将 .NET dll 添加到与 Release EXE 相同的目录并重新注册 tlb 文件,但没有帮助。对我可以检查什么有什么建议吗?


好吧,在黑暗中拍摄。值得尝试的事情:

显式新建会话对象(以及许可证和FolderTemplateCollection):

Private objSession as Session
Set objSession = new Session

自动化错误表明 .NET 程序集中的 GUID 未保留。为此,请在 C# 代码中执行此操作 - 这样可以保证所有接口/类/虚拟表持续存在,无论您编译 C# 代码多少次:

[Guid("9AC71CA7-6F82-44A3-9ABE-75354B514A46")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IManager
{
    [DispId(1)]
    void Display(ADODB.Recordset recordSet);
    [DispId(2)]
    void Close();
    [DispId(3)]
    string UserName { get; set; }
    [DispId(4)]
    string Password { get; set; }
    [DispId(5)]
    string Database { get; set; }
    [DispId(6)]
    string Server { get; set; }
    [DispId(7)]
    ICriteria Criteria { get; set; }
}

[Guid("B9BB5B84-8FBD-4095-B846-EC072163ECD3")]
[ClassInterface(ClassInterfaceType.None)]    
[ProgId("MyApp.Manager")]
public class Manager : IManager
{
    void Display(ADODB.Recordset recordSet) 
    {
    }
    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 COM Interop 的 VB6 应用程序在 IDE 中工作正常,但编译后的 EXE 崩溃 的相关文章

  • 将 Clojure 函数作为 java.util.Function 传递

    正如在主题中一样 我想使用一个以 Function 作为参数的 Java 方法 并为其提供一个Clojure函数 无论是匿名函数还是常规函数 任何人都知道如何做到这一点 java util function Function是一个接口 您需
  • 有没有便宜或免费的 VB6 编程 IDE? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 无法获取 OLEObject 类的 Object 属性 - Excel Interop

    我用谷歌搜索了这个问题 但未能找到解决方案 如果文件保存为 xls 而不是 xlsm 则此代码有效 我使用的是 Office 2013 32 位 我编写了一个 COM 公开的 C 类库 Excel工作簿实例化一个对象并传入对当前工作簿的引用
  • 如何使用 VB6 将 PNG(图像)文件打开为 RGB 数组或 R、G、B 数组

    如何用VB6打开PNG格式的图像文件 理想情况下 我 即我的客户 希望打开 PNG 文件并将其放入单独的 R ed G reen 和 B lue 数组中 VB6 不是我选择的工具 因为缺乏知识 如果有人能为我指明 VB6 解决方案的正确方向
  • 在 VB6 中什么时候必须将变量设置为“Nothing”?

    在我的一个 VB6 表单中 我创建了几个其他 Form 对象并将它们存储在成员变量中 Private m frm1 as MyForm Private m frm2 as MyForm Later Set m frm1 New MyForm
  • tlbexp.exe 更改方法名称的大小写

    我有一个相当奇怪的问题 我正在将接口从 C 库导出到 COM 我已启用 使用 COM 注册 项目设置 因此它调用 tlbexp exe 来创建类型库 我们在方法名称上使用驼峰式大小写 我注意到导出的类型库将这些恰好与类名一致的方法更改为 P
  • AxInterop 和 Interop 有什么区别?

    我已将 ocx 添加到 VS 的工具箱中 创建了两个 dll Interop NNN dll AxInterop NNN dll 每一个是什么 两者都需要吗 Interop xxx dll 和 AxInterop xxx dll 分别是引用
  • 如何调整 CWnd 内 WPF 控件的大小?

    我正在托管 WPFUserControlMFC 内部CWnd 它工作得很好 我现在需要弄清楚如何与其父控件一起调整控件的大小 我已经迷上了OnSize我正在打电话GetWindowRect并将结果设置为我的控件 如下所示 void CChi
  • 添加 Windows Common Controls 6.0 时对象库未注册

    我正在尝试在 Windows 7 32 位计算机上安装 Visual Studio 6 操作系统安装是从裸机进行的 我按照提到的说明进行操作here http www fortypoundhead com showcontent asp a
  • IDispatchEx 存在于哪里?

    找不到包含 IDispatchEx 接口的库 我想实现这个接口 但是找不到 有谁知道它在哪里吗 谢谢 保罗 如果您想编写一个实现的托管类IDispatchEx http msdn microsoft com en us library sk
  • VB6 类有析构函数吗?

    当我执行诸如以下的语句时 Set MyObject Nothing 类中是否有一个被调用的特定函数 即我可以用作析构函数 来执行诸如清理数组 与数据库断开连接等操作 类似于Class Initialize 构造函数 还有一个析构函数 Sub
  • 在 VB6 应用程序中使用 .NET dll

    我在 c net 中编写了一个 dll 它在应用程序中调用另一个第三方 NET dll 当我使用用 c NET 编写的控制台应用程序以及使用以下代码对其进行测试时 效果很好 Assembly u Assembly LoadFrom dllL
  • 如何在 .NET 中操作 VB6 集合?

    我目前正在为 NET 软件设计一个接口 该接口将由 COM 对象 特别是 VB6 使用 虽然我找到了 Microsoft 的许多页面 详细介绍了如何创建 COM 互操作接口 但我目前在设计时对 Collections 的使用感到困惑 我希望
  • ReDim 在 VB6 中保留为多维数组

    我正在使用 VB6 我需要做一个ReDim Preserve到多维数组 Dim n m As Integer n 1 m 0 Dim arrCity As String ReDim arrCity n m n n 1 m m 1 ReDim
  • 多种语言如何在一个项目中交互?

    我听说有些人在一个项目中使用多种语言进行编程 我无法想象这些语言如何相互作用 我的意思是没有像这样的Java方法 myProgram callCfunction parameters 从来没有发生过还是我错了 在一个项目中使用多种语言实际上
  • Java 工具创建的 WSDL 文件的 WCF 序列化问题

    我的团队的任务是让几个内部开发的 NET 客户端应用程序连接到一些新的 Java Web 服务 Java Web 服务是第三方 供应商提供的 WSDL 文件 我们的团队修改 控制的能力有限 这意味着我们可能有权要求我们的供应商对 WSDL
  • VT_DATE 类型的微秒支持

    VT DATE 变体类型是否支持微秒分辨率 请告诉我如何在VB中显示相同的内容 http msdn microsoft com en us library ms221646 aspx http msdn microsoft com en u
  • 如何将现有的窗体添加到 vb6 项目中?

    我的 vb6 项目中有一个表单 Search frm 我想添加具有不同名称 SearchNew frm 的相同表单 我复制了表单 Search frm 并重命名为 SearchNew frm 并尝试添加到项目中 但它给我一个错误 Searc
  • 如何使用 java/vb 脚本调用自定义 ActiveX dll 中的方法

    我使用 VB6 创建了一个 ActiveX dll 并使用打包和部署向导将其打包 生成了一个 cab 文件和一个演示 HTML 页面 此 ActiveX dll 包含一个 simgle 方法 该方法返回字符串且不接受任何参数 我遇到的麻烦是
  • Vista幻影目录

    我们有一个程序 安装程序会检查配置文件是否存在 如果存在 它不会复制该文件 它假设用户已修改其配置文件并希望保留这些修改 不幸的是 这是一个 Vista 之前的应用程序 它将配置文件保存在 Program Files 中 问题是 如果你在重

随机推荐

  • 我可以将 Partials 导入到 SASS 中的 Partials 中吗?

    我正在使用 Sass 设计一个新网站 最初 我的 style scss 编译的主 SCSS 文件 导入了 generic scss 我在其中定义了变量 和各个页面 例如 homepage scss 效果很好 然后我尝试重构 homepage
  • 到 MSMQ 还是不到 MSMQ? (或 SQL 表作为队列)

    我有一个分布式系统 其中有 1 个 SQL Server 1 n 个处理服务器和 1 n 个数据提供者 网络上的硬件设备 提供的数据在进入关系数据库结构之前需要进行处理 由处理服务器执行 作为 Windows 服务 net 代码来解析数据
  • Excel公式如何连接字符串以供外部参考

    假设我在单元格中有以下公式 该公式从另一个工作簿读取单元格的值 c temp external book xlsx SheetX E 4 我想要的值c temp external book xlsx SheetX来自此工作表中的另一个单元格
  • 使用 Python 进行 Google-Forms 响应?

    我正在尝试编写一个 Python 脚本 它可以在 Google 表单中提交响应 如下所示 https docs google com forms d 152CTd4VY9pRvLfeACOf6SmmtFAp1CL750Sx72Rh6HJ8
  • 删除 GitLab 中的版本

    我在 GitLab 中发布的版本有问题 我在我的项目中用标签创建了它们 现在我想删除它们 所以我删除了关联的标签 但我的版本始终显示 我在 Google 和 Stack Overflow 上搜索 但找不到任何解决方案 如何删除这些没有标签的
  • TreeView 不显示存储在数据中的子项

    在我的程序中我有一个TreeView具有数据支持 视图模型和数据模型 添加到的每个项目TreeView添加一个子项 但由于某种原因 子项在运行时没有反映 但是 我可以在调试期间看到孩子们以及我的 孩子 属性TreeView s数据模型包括N
  • 我怎样才能得到联系人姓名和他/她的电话号码

    我正在尝试使用 Android 脚本和 Python 开发一个简单的应用程序 现在 我有一个电话号码 我想找出哪个联系人有该号码 我可以执行 contactGet 并搜索号码 但很多程序都使用该功能 我认为有一种更简单的方法 有一个同样的问
  • 如何在 Windows 8 METRO 应用程序中实现错误日志记录?

    您好 我正在开发一个 Windows 8 c xaml Metro 应用程序 我想在我的应用程序中实现错误日志记录 我想以更好的方式处理错误日志 1 如何记录错误信息 以便于开发者纠正错误 2 是否有任何第三方工具 免费库用于在 Metro
  • 当我手动更改 firebase 数据库中的值时,我在列表视图中创建更多项目,而不是更新列表视图中的值

    我不知道我的代码出了什么问题请帮助我 只是尝试检索数据以列表视图 我的 MainActivity java public class MainActivity extends AppCompatActivity ListView listV
  • jQuery 动画和属性值(以百分比表示)

    我试图为 div 制作动画 并尝试使用在其他地方检索到的一些值 我知道该值是正确的 因为我已经打印出了输出 所以我想知道为什么它不能正常工作 animateBar percentage toFixed 2 function animateB
  • Xamarin.Forms WidthRequest 值含义

    在 Xamarin Forms 中 以下属性获得双精度值 WidthRequest HeightRequest Padding Spacing 等 这个数字有什么意义呢 是像素还是其他 我在这些属性中输入的值是否会响应设备屏幕尺寸 考虑到多
  • 无法加载资源:net::ERR_BLOCKED_BY_RESPONSE [重复]

    这个问题在这里已经有答案了 我正在寻找 iframe 这个问题的一些解决方案 domain com 1 Refused to display domain com q node add editor in a frame because i
  • XML 属性可以有空格吗?

    我正在创建一个DTD http www xmlfiles com dtd 对于 xml 文档 我有一个枚举属性 http www xmlfiles com dtd dtd attributes asp对于 xml 元素 我的问题是 属性可以
  • Java:带状态的 ASCII 随机行文件访问

    是否有比创建满足以下条件的流文件读取器类更好的 预先存在的可选 Java 1 6 解决方案 给定一个任意大大小的 ASCII 文件 其中每行都以 n 对于某个方法的每次调用readLine 从文件中读取随机行 并且在文件句柄的生命周期内不会
  • JQuery 最佳实践,在 IIFE 中使用 $(document).ready?

    我正在看一段代码 function other code here document ready function other code here jQuery 我虽然 IIFE 执行 document ready 的功能 但这段代码正确吗
  • SQL Server - 条件语句的查询执行计划

    条件语句 例如如果别的 影响 SQL Server 2005 及更高版本 中的查询执行计划 条件语句是否会导致执行计划不佳 在考虑性能时是否需要警惕任何形式的条件 编辑添加 我特别指的是缓存的查询执行计划 例如 在下面的实例中缓存查询执行计
  • stringByAddingPercentEscapesUsingEncoding 转义的字符是什么?

    我不得不从 stringByAddingPercentEscapesUsingEncoding 切换到 CFURLCreateStringByAddingPercentEscapes 因为它不会转义问号 我很好奇它到底转义了什么 以及部分转
  • tee 和 script 本质上是等价的吗?

    在我想要捕捉的上下文中stdout文件中进程的一个 但仍希望在终端中显示此输出 我可以选择script and tee 在这种情况下 这些工具本质上是等效的 还是有一个 可能是微妙的 理由来选择其中一个而不是另一个 节目script and
  • 如何使用 MsBuild 创建可移植数据库?

    我想在我的解决方案中存储一个包含数据库创建脚本的项目 构建此项目时 它必须生成一个数据库文件 然后该数据库文件将在运行时供该解决方案的该项目和其他项目使用 怎么做 我知道我可以添加预构建任务 但我想知道 哪个命令行可以帮助我 也许 sqli
  • 使用 COM Interop 的 VB6 应用程序在 IDE 中工作正常,但编译后的 EXE 崩溃

    我目前正在开发一个 VB6 中的应用程序 该应用程序使用使用 NET 2 0 框架用 C 编写的 COM 互操作库 我使用 regasm exe 使用 codebase 开关从 NET dll 注册 tlb 文件 然后 我能够在 VB6 I