VB.NET 4.8.1调用VB6 DLL中myFunc函数找不到入口点的解决问询
VB.NET调用VB6 DLL找不到入口点的解决方法
你遇到的问题根源是:VB6生成的是COM组件DLL,而非标准Win32 API DLL,不能用Declare语句直接调用。以下是正确的实现步骤:
1. 注册VB6 DLL(若未注册)
执行注册命令时注意路径含空格需加引号:
regsrv32 "C:\temp\Test DLL.dll"
2. 在VB.NET项目中添加COM引用
- 右键你的VB.NET项目 → 选择「添加」→「引用」
- 切换到「浏览」标签,找到并选中
C:\temp\Test DLL.dll,点击「确定」完成引用添加
3. 修改VB.NET代码调用函数
删除原来的Declare声明,通过创建COM类实例调用myFunc:
Public Class Form1 Private Sub bTest_Click(sender As Object, e As EventArgs) Handles bTest.Click ' 创建VB6类模块的实例 Dim testInstance As New MyTest() ' 调用COM类中的函数 Me.tOutput.Text = testInstance.myFunc(Me.tInput.Text) End Sub End Class
关键说明
- VB6的DLL将函数封装在COM类(你的类模块名称
MyTest)中,并非以全局入口点形式暴露,因此Declare语句无法识别函数名。 regsrv32的作用是注册COM组件,让系统能识别并找到该组件,但注册后仍需通过COM实例访问内部成员,而非直接调用函数入口。
内容的提问来源于stack exchange,提问作者LPChip
相关产品推荐
相关产品推荐

