【发布时间】:2023-03-22 10:10:01
【问题描述】:
TL:DR;如何将 VB6 模块文件编译成标准 DLL,以便在多个 VB6 应用程序中使用?
我的任务是支持用 VB6 编写的多个遗留应用程序。
所有这些应用程序都使用了我的雇主构建的硬件。在我开始为我的雇主工作之前,他已将为该项目开发 DLL 的工作外包给了一家不再有能力支持它的公司,因为为他们工作的个人最近辞职了,没有其他人能够弄清楚它出去。
我的雇主最近升级了我们的硬件,更糟糕的是 - 公司 提供给我们的 DLL 也不再有用了。
向我们发布NEW硬件的公司并未向我们发布能够在VB6中运行的DLL文件,这进一步加剧了这一事实。
现在由我来创建一个 DLL 文件(不是设备驱动程序),它能够促进新设备(希望是旧设备)和VB6 应用程序。
我对 VB6 的了解……充其量是有限的。我最熟悉 .Net 并且在 .Net 中创建 DLL 方面取得了很大的成功,但是当谈到 VB6 时,我知道的足够了。我在这里进入了未知领域。
我非常熟悉 HID.dll 和 SetupAPI.dll P/Invokes 以及完成这项工作所必需的结构,我什至有幸偶然发现了 this,它有一些 VB6 代码这有助于读取/写入连接到系统的 HID。我对此进行了测试,并且(有点烦躁)它对我们的设备开箱即用。但这对我没有帮助,因为我无法将模块编译成 DLL 文件(更不用说找出 VB6 中的事件和一大堆其他东西了,但我已经超前了)。
我有 read 和 tried 几种不同的方法,虽然它们被证明很有希望,但它们没有奏效。
谷歌也给我带来了很多红鲱鱼,而且总体上没有多大帮助。
如果有必要,我什至会用 C/C++ 编写它(尽管如果有其他方式我宁愿不这样做)。
那么我正在尝试做的事情可能吗?有人可以指导我逐步完成这类事情吗?
编辑 1:
稍微解释一下,当我说“他们没有工作”时,我的意思是在第一个链接的情况下,程序仍然找不到函数(带有类似“函数入口”的错误消息未找到点”),在第二种情况下,我在尝试调用函数时始终反复收到内存写入错误(不好玩)。
【问题讨论】:
-
they didn't work你可能想解释一下如何等等。行星源代码链接包含一个您可以查看的项目。是制作一个 VB6 DLL 还是让 VB6 用一些 HID 做你想做的事情? -
@Plutonix 主要问题是制作 VB6 DLL。
-
@Will:没有“VB6”DLL -> 这是一个 ActiveX DLL。要创建“标准”(=no ActiveX)DLL,请参阅 BobRodes 的最佳答案。