1,065
社区成员
发帖
与我相关
我的任务
分享


保存文件的目录,就是在VB6的“生成工程”对话框指定的目录。
如果DLL文件链接成功,肯定会有一个你指定名称的dll文件在那儿。
如果有什么问题,要把问题现象描述清楚啊!
1. 出现“DLL导出函数管理窗口”?
2. 在导出函数管理窗口中,点“确定”之后,它有没有报告错误消息?
另外,请下载最新版本的 DLL制作工具: VB6.0_DLL制作工具(Ver2.01)
[/quote]
VB的问题找到了,函数中有引用的变量,写错了。经过试验,Win10 64位系统,VB6.0,可以编译并调用VB6生成的带窗体和弹出框的标准DLL。但是office2013 64位和CAD2014 64位确实不能调用VB6.0编译生成的标准DLL,经过搜索,就是因为我用的系统都是64位的文档,而且是在Win10 64位系统,所以没法调用VB6.0生成的32位的DLL。如果是Win7的64位系统,也许可以调用VB6.0生成的32位的DLL。
在Win10 64位系统中,一个简单的getobject语句都无法实现,何况是32位DLL调用呢。[/quote]
VB6是32位的,它编译出来的东西,肯定只能用于Win32的环境。
你用64位的 Office、CAD软件,肯定不能调用VB6编译出的dll。
至于你说的“64位系统中,一个简单的getobject语句都无法实现”,这些我倒是不清楚具体情况。
64位的Office,我还没有使用过,以前我用64位Win7的时候,安装的是Office2003。
现在公司里的电脑是32位的Win7专业版,安装的Office 2007。
目前还没使用过07以上的Office版本(我不是什么软件都要用“最新”的那种人
)
[/quote]
Win10系统下调用GetObject的语句已经解决了,问题还是出在我的代码上。由于VB6调用GetObject在Win10系统不起作用,受其误导,我在office宏和VS2013中的GetObject调用代码都不正确,所以也用不了。这问题困扰了我几个月时间。前几天在网上搜索到在VBA7中使用Getopenfilename API时,顺便点开了一个介绍64位的Win32 API的网页,经过仔细查看,终于解决了Win10系统的GetObject的调用,同时在office64位的宏中GetObject调用也成功实现。这说明有时候代码中可能只是一个小错误,但要检查出来却很困难,所以,一定要仔细!多谢Chen8013 
[/quote]
VB的问题找到了,函数中有引用的变量,写错了。经过试验,Win10 64位系统,VB6.0,可以编译并调用VB6生成的带窗体和弹出框的标准DLL。但是office2013 64位和CAD2014 64位确实不能调用VB6.0编译生成的标准DLL,经过搜索,就是因为我用的系统都是64位的文档,而且是在Win10 64位系统,所以没法调用VB6.0生成的32位的DLL。如果是Win7的64位系统,也许可以调用VB6.0生成的32位的DLL。
在Win10 64位系统中,一个简单的getobject语句都无法实现,何况是32位DLL调用呢。[/quote]
VB6是32位的,它编译出来的东西,肯定只能用于Win32的环境。
你用64位的 Office、CAD软件,肯定不能调用VB6编译出的dll。
至于你说的“64位系统中,一个简单的getobject语句都无法实现”,这些我倒是不清楚具体情况。
64位的Office,我还没有使用过,以前我用64位Win7的时候,安装的是Office2003。
现在公司里的电脑是32位的Win7专业版,安装的Office 2007。
目前还没使用过07以上的Office版本(我不是什么软件都要用“最新”的那种人
)
[/quote]
VB的问题找到了,函数中有引用的变量,写错了。经过试验,Win10 64位系统,VB6.0,可以编译并调用VB6生成的带窗体和弹出框的标准DLL。但是office2013 64位和CAD2014 64位确实不能调用VB6.0编译生成的标准DLL,经过搜索,就是因为我用的系统都是64位的文档,而且是在Win10 64位系统,所以没法调用VB6.0生成的32位的DLL。如果是Win7的64位系统,也许可以调用VB6.0生成的32位的DLL。
在Win10 64位系统中,一个简单的getobject语句都无法实现,何况是32位DLL调用呢。
我没有Win8的系统来进行测试。
理论上说,如果你的VB6能在8.1下正常编译你的VB工程(EXE或者ActiveX DLL),
那么用我的工具就能正确编译出DLL。
Option Explicit
Public Sub qq5() ' 死机
Dim w As Long
Dim s As Variant
For w = 1 To 100
s = s + 1
Next
MsgBox s, 64, "DLL 测试1"
End Sub
Public Sub qq6() ' 死机
Dim s As String
Dim w As Long
For w = 1 To 100
s = s & 1
Next
MsgBox s, 64, "DLL 测试2"
End SubPrivate Declare Sub qq5 Lib "E:\Temp\Std_DLL.dll" ()
Private Declare Sub qq6 Lib "E:\Temp\Std_DLL.dll" ()
Private Sub M1()
Call qq5
Call qq6
End Sub