主程序AppProject.EXE代码:
窗体frmMain代码:Option ExplicitPrivate Sub cmdOpt_Click()
objAppObject.CreateAppObject ("AppTest.DerivedObject")
End Sub模块mdlMain代码:Option ExplicitPublic objAppObject As ObjectSub Main()
Set objAppObject = New AppObject
Load frmMain
frmMain.Show
End Sub类AppObject代码:Option ExplicitPublic Function HelloWorld() As String
HelloWorld = "Hello World"
End Function
Public Function CreateAppObject(ByVal strAppObj As String)
Dim objCreate As Object
Dim x As Object
Set x = objAppObject
Set objCreate = CreateObject(strAppObj)
objCreate.DerivedObject x
Set objCreate = Nothing
End Function
封装了窗体的DLL(AppTest.DLL)代码:
模块mdlMain代码:Option ExplicitPublic objMyApp As Object
类DerivedObject代码:Option ExplicitPublic Function DerivedObject(ByRef objApp As Object)
Dim objFrm As Object
Set objMyApp = objApp
Set objFrm = New frmMain
objFrm.Caption = objApp.HelloWorld
objFrm.txtWord = "Hello World!"
objFrm.Show
End Function
这种结构编译完成之后运行肯定是没有问题的,请问这种结构的程序如何在IDE下调试DLL?
编译主程序EXE后,调试DLL的时候提示:
“属性或方法调用不能包含私有对象的引用,不论是作为参数还是作为返回值”。
请赐教。
这种模式有一个极大的好处,编译完成一个主程序之后,其他部分可以交给他人完成而互不干扰,只要相互之间约定一个接口的方法即可。公用的方法、属性,全部通过主程序来传递。
窗体frmMain代码:Option ExplicitPrivate Sub cmdOpt_Click()
objAppObject.CreateAppObject ("AppTest.DerivedObject")
End Sub模块mdlMain代码:Option ExplicitPublic objAppObject As ObjectSub Main()
Set objAppObject = New AppObject
Load frmMain
frmMain.Show
End Sub类AppObject代码:Option ExplicitPublic Function HelloWorld() As String
HelloWorld = "Hello World"
End Function
Public Function CreateAppObject(ByVal strAppObj As String)
Dim objCreate As Object
Dim x As Object
Set x = objAppObject
Set objCreate = CreateObject(strAppObj)
objCreate.DerivedObject x
Set objCreate = Nothing
End Function
封装了窗体的DLL(AppTest.DLL)代码:
模块mdlMain代码:Option ExplicitPublic objMyApp As Object
类DerivedObject代码:Option ExplicitPublic Function DerivedObject(ByRef objApp As Object)
Dim objFrm As Object
Set objMyApp = objApp
Set objFrm = New frmMain
objFrm.Caption = objApp.HelloWorld
objFrm.txtWord = "Hello World!"
objFrm.Show
End Function
这种结构编译完成之后运行肯定是没有问题的,请问这种结构的程序如何在IDE下调试DLL?
编译主程序EXE后,调试DLL的时候提示:
“属性或方法调用不能包含私有对象的引用,不论是作为参数还是作为返回值”。
请赐教。
这种模式有一个极大的好处,编译完成一个主程序之后,其他部分可以交给他人完成而互不干扰,只要相互之间约定一个接口的方法即可。公用的方法、属性,全部通过主程序来传递。
然后将 Exe 工程运行起来。
objAppObject.CreateAppObject ("HiTest.clsObject")
End Sub这一行代码出错:
属性或方法调用不能包含私有对象的引用,不论是作为参数还是作为返回值。我想要的结果是能运行主程序AppProject.EXE来调试DLL
Dim obj As Object
Set obj = CreateObject("HiTest.clsObject")
obj.DerivedObject(****)
方法一:将DLL工程和应用程序,建立一工程组,此时的调试方法与一般的应用程序用。
方法二:在应用程序外调试。同时打开应用程序和DLL工程,在DLL工程的project菜单中的project property选项的debugger中,设置调用此DLL的EXE文件。并在DLL中设置断点,启用EXE即可进行调试了
你这个dll编译没有问题吗?
都没有问题
主程序和DLL程序都编译之后可以正常运行。
你注意我列出的代码了吗?我编译这里不能通过,你的dll里加窗体了?
原来如此,我的主程序用的标准Exe
嗯,我封装了窗体在DLL里面。
我的想法,是做一个主程序,在主程序里面提供很多公用的方法,比如数据连接,数据处理这些,
然后团队里面的人可以分别开发自己的DLL,通过一个公用的接口,能互相调用。
最后,只要把这些DLL和主程序一起打包就可以发布了。