请教:如何在vb中调用VC写的类源代码?
一个VC写的class,对我的工程很有帮助。我也不想用Vb重来一遍了。效率不高,而且时间不允许。那位gg有过这方面的经验,请帮助我一下。谢谢
问题点数:118、回复次数:14Top
1 楼Mike_sun(漠风)回复于 2002-01-26 00:08:18 得分 10
编译成DLL,在VB中调用
Top
2 楼bdgyz(中关村)回复于 2002-01-26 01:35:10 得分 0
源代码级别上的引用有嘛?
Top
3 楼wei131420(我为.net狂)回复于 2002-01-26 01:40:06 得分 0
VB怎样调用DLL阿Top
4 楼bdgyz(中关村)回复于 2002-01-26 02:06:28 得分 0
to wei131420(庸才)
hehe,你用的很多控件不都是写在dll文件里面的嘛?
可以再dll里做成带form的(常规UI控件),也可以不带FOrm,如WinAPI函数。
自己的dll文件引用时要先注册:regsvr32命令
然后可以在你的工程里面声明你的类或者user control 或者function了
Top
5 楼Bardo(巴顿(永远只有一个))回复于 2002-01-26 13:24:56 得分 30
中关村的DLL都要注册?(Hehe)用vc可写标准DLL,即API的DLL.这是不用注册的。
当然,如果你用ATL,则要注册!
Top
6 楼keyage(华)回复于 2002-01-26 15:55:11 得分 10
VB调用DLL,这可是基本的知识呀,查msdn吧!Top
7 楼AdamBear(亚当熊)回复于 2002-01-26 18:42:38 得分 0
源码级别的引用肯定没有,要想保持类结构把它们写成ActiveX DLL。Top
8 楼bdgyz(中关村)回复于 2002-01-26 20:27:01 得分 0
to Bardo(巴顿):
看来我是在误导别人了。但是如果自己在DLL文件里写了一些函数。如果不注册,怎么才能让VB知道你引用这个DLL文件的地址呢?望巴顿大哥赐教。
Top
9 楼sunbo()回复于 2002-01-27 11:07:06 得分 20
VC写的class可以用扩展DLL的形式输出,但由于C++名称修饰的没有一个统一的标准,另一个VC程序(EXE、DLL)可以直接以class 的形式使用DLL,但是VB不能。
若希望VB以class的形式使用VCDLL,VC写的class可以做成COM组件输出,但是COM 组件必须注册。(regsvr32 COM组件.dll)。
若只希望VB使用VC写的class的功能,可将class的功能以全局函数的形式从标准DLL(而不是扩展DLL)中输出。
Top
10 楼redleaves(程序员)回复于 2002-01-27 11:38:00 得分 20
Public Declare Function AbortPath Lib "gdi32" Alias "AbortPath" (ByVal hdc As Long) As Long
以上就是一个在VB中声明DLL中函数的例子(用API VIEWER生成的)。如果你自己写DLL的话,声明方式也是这样.只是要注意参数的传递方式。ByVal是传值,ByRef是传址(一般用来传指针或引用型的参数)。还要注意参数的类型,像Any这种类型就要小心使用。另外,传字符串是要注意,VB和C/C++的字符串不一样,VB字符串没有\0做结束符,还有VB的变长字符串使用不当会出莫名其妙的问题。
Top
11 楼cqhydz(混点分加个角)回复于 2002-01-27 17:34:25 得分 0
看看Top
12 楼gmc007(江西的佬表)回复于 2002-01-27 18:40:14 得分 20
: bdgyz(中关村) 看来我是在误导别人了。但是如果自己在DLL文件里写了一些函数。如果不注册,怎么才能让VB知道你引用这个DLL文件的地址呢?望巴顿大哥赐教。
像调用API一样声明就行了Top
13 楼lll2002()回复于 2002-01-27 22:35:24 得分 8
并非全部可以调用!Top
14 楼Bardo(巴顿(永远只有一个))回复于 2002-01-28 13:39:23 得分 0
实际上,我上面说得并不完整,如果要导出类,则VB就不可用。因而需要一定的手段:
用ATL或用COM,若是这样,就需注册。
Top




