您的位置:程序门 -> vb -> 基础类



关于vb生成dll文件的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于vb生成dll文件的问题[无满意答案结贴,结贴人:liulhack]
发表于:2007-08-25 15:13:10 楼主
我建立了一个activex   dll工程,在类模块中定义了一个自定义类型,如下
public   type   test
      num   as   integer
      pname   as   string
end   type
然后定义函数
public   function   stest(byval   gtest   as   test)   as   test
gtest.num   =   1
gtest.pname=   "jima "
stest   =   gtest
end   sub
生成dll时出现错误,大概是说只有在公共模块定义的变量才能作参数,而且当我输入
"gtest. "时并没有出现参数提示,后来我将自定义类型移入模块中,然后定义dim   p   as   test,又定义了一个函数,在函数外输入 "p. "是会出现参数提示,但是在函数内输入时并没有出现提示,请问这个问题怎么解决.你们可以建立一个activex   dll工程试试.
发表于:2007-08-25 18:35:111楼 得分:0
最近也碰到了这样的问题,
试了几次后把自定义类型写在一个类模块里成了一个类,
那个提示就没再出现,

不知还有其他方法没有?自己是稀里糊涂的,也不知道为什么有这个提示
发表于:2007-08-25 19:19:452楼 得分:0
两个问题:
1、自定义类型是不能作为类的公共接口参数或返回值的,解决办法一般是将自定义类型封装成类,当然也有其它变通办法;
2、自定义类型做参数,不能byval传递,只能按址。

输入 "p. "没有出现参数提示,是因为前面有错误了,如byval没去掉
发表于:2007-08-25 20:52:363楼 得分:0
1、自定义类型是不能作为类的公共接口参数或返回值的,解决办法一般是将自定义类型封装成类,当然也有其它变通办法;
------------------
如何操作,请指教.
发表于:2007-08-25 21:44:464楼 得分:0
自定义类型的局限性是vb为保证com接口的通用性而设定的规则,不可改变,但规则是死的,人是活的,不能在这一个问题上被困死。

解决办法一般是将自定义类型封装成类!做为一个对象传递。

若不值得封装成类,或为提高效率、或为偷懒,最简单是用多个参数,若类型一致或转换方便,也可用数组,包括variant数组,当然也可用集合。方法太多了,甚至可模仿api方式,传递指针。不同情况,基本都可找出合适的最佳方案,就看你的想像力了!
发表于:2007-08-26 13:46:265楼 得分:0
那么,vb如何将自定义类型封装成类呢?
发表于:2007-08-26 17:25:466楼 得分:0
studied~~~~
发表于:2007-08-26 22:01:337楼 得分:0
把自定义类型的每个成员,做为类的一个公共属性,就是最简单的封装了。
要传递自定义类型的地方,换成传递类的实例。
发表于:2007-08-28 13:30:398楼 得分:0
这几天我又试了一下,又可以了.但是又有新的问题.
我如果用vc调用vb的dll进行顺序文件的读写,是成功的.
但是如果用vc调用vb的dll进行随机文件的读写,编译可以通过,但是运行是却出现错误,这是怎么呢?(其中自定义类型在dll中)


快速检索

最新资讯
热门点击