我正在使用日志记录功能维护DLL。我想将ListBox参数添加到此DLL的方法中以允许显示日志记录。
基本上这个dll可以用这种方式描述:
' Class loggingDll.loggingObject
Public Function processIt([...], aLogBox As Object)
' Simple test code lines...
Dim l As VB.ListBox
Set l = aLogBox
' [...]
End Function
EXE附带一个GUI,包含一个VB.ListBox。这个ListBox
(让我们称之为LogBox
)以这样的方式传递给DLL:
' Exe DllCaller.Exe
Private Sub Form_Load()
Dim aLoggingObject as loggingDll.loggingObject
Set aLoggingObject = New loggingDll.loggingObject
aLoggingObject.processIt(LogBox)
End Sub
当我运行EXE时,这完全正常。但是当在调试模式下运行DLL时,这个EXE(项目 - >属性 - >调试选项卡选项"启动程序"带有EXE的路径),我得到一个丑陋的"类型不匹配& #34;在Set l = aLogBox
。
我在aLogBox
变量上添加了间谍。 TypeName(aLogBox)
返回"ListBox"
,但aLogBox
的内容为空(尽管VB.ListBox
对象充满了属性)。
发生了什么?为什么调试模式的行为不一样?