vb引用vb封装的Active DLL为何会没有公共模块中的函数?

lxjianhui 2012-12-12 04:59:47
用vb制作active dll,dll中有一个类模块,一个公共模块。
其中类模块代码:
Private Sub Class_Initialize()
Debug.Print "Initialize Thing "
End Sub

Private Sub Class_Terminate()
Debug.Print "Terminate Thing "
End Sub
......
公共模块中代码:
Public a As Long

Public Function inc() As Long
a = 0
inc = a + 1
End Function
然后生成dll,再另外启动vb标准窗体程序,引用生成的这个dll,结果在对象浏览器中并没有发现Module标准模块中的inc函数,只能看到Class类模块及其成员。
接着参考网上的添加active dll中输出函数的方法结果也是一样,难道一定要用vc或其它工具来制作
com组件才能实现这样的功能吗?
...全文
1754 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
东方之珠 2012-12-13
  • 打赏
  • 举报
回复
封装到类中吧。 标准模块是公共的,大家都可以用,包括类模块也可使用标准模块。没有封装标准模块这个说法。标准模块中的全局函数要通过类模块才能调用。
lxjianhui 2012-12-13
  • 打赏
  • 举报
回复
首先感谢各位老大的回帖,关于这一块MSDN上也没有详细说明,本人也是在做多线程开发的时候,在引用第三方控件的dll(如ThreadFactory)中可以看到Module中的函数,而ThreadFactory的dll好像是用C++和汇编所写的com组件,感觉如果将常用的API函数或其它个人编写的函数封装到Dll的Module模块中会方便很多,有些代码就不需要重复Key了。
threenewbee 2012-12-12
  • 打赏
  • 举报
回复
这就是面向对象。 面向对象三原则之首就是“封装”,所有非公共接口的函数都不应该暴露给调用者。
东方之珠 2012-12-12
  • 打赏
  • 举报
回复
估计楼主没看MSDN的习惯,MSDN上有现成的例子。 编写ActiveXDLL程序一定要先看MSDN,这样你编写的程序才会高效。
bcrun 2012-12-12
  • 打赏
  • 举报
回复
哪楼上所说,然后可以把这个类模块的Instancing属性定义成GlobalMultiUse,实现类似你要的公共模块的效果
worldy 2012-12-12
  • 打赏
  • 举报
回复
VB中,使用activeexe,activexdll,ocx控件,封装后,只能存在于类模块中,被定义为public的属性方法过程,而定义在basmodule中的任何变量或方法在类用户中都是不可见的,如果过程方法希望在类用户可见,则需要将该方法定义到类模块中
clear_zero 2012-12-12
  • 打赏
  • 举报
回复
你要弄一个public class然后把public function写在public class里面

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧