永发信息网

VB写标准dll

答案:1  悬赏:30  手机版
解决时间 2021-04-20 15:58

VB中创建的DLL只是COM组件,无法作为输出函数的DLL,其实这只是个错误的说法。其实MS非常狡猾,如果你是个VB疯狂发烧友的话,应该早就狂试出这种可以创建输出函数的DLL的方法。 VB编译文件实际上采取了两次编译的方法,首先是调用C2.exe产生*.OBJ文件,然后调用Link.EXE连接。如果在LINK的时候添加EXPORT选项,实际上是可以输出函数的。但是,在VB的工程选项中将这些屏蔽了。而且过分的是:VB在Build完成后会将OBJ文件删除,这样就无法手动通过Link来创建我们需要的DLL了。不过我找到一个比较龌鹾的变通的方法,就是先创建一个Exe工程,在Form_Load事件里面写下面的语句: Sub Main If MsgBox("哈哈", vbOKCancel) = vbOK Then Shell "link2.exe " & Command$ End If End Sub 然后编译为LinkTemp.EXE,接下来将LINK.EXE改名为Link2.exe,将LinkTemp.EXE改名为Link.EXE。这样在VB调用Link.EXE时会弹出对话框,处理就会中断。这时就可以有机会将OBJ文件拷贝出来了。 然后我创建了一个ActiveX DLL工程,在这个工程里面添加一个Module并创建一个Public函数mathadd: Public Function mathadd(ByVal a As Long, ByVal b As Long) As Long mathadd = a + b End Function 编译这个工程,在Link的时候就会中断。然后把创建的Class1.obj、Module1.obj、Project1.obj备份出来。 然后就可以调用Link2.exe连接OBJ到DLL了,我的连接代码是: Link2.exe "e:\vbdll\Class1.obj" "e:\vbdll\Module1.obj" "e:\vbdll\Project1.obj" "E:\Program Files\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /ENTRY:__vbaS /EXPORT:mathadd /OUT:"e:\vbdll\ProjectOK.dll" /BASE:0x11000000 /SUBSYSTEM:WINDOWS,4.0 /VERS 注意里面的/ENTRY和/EXPORT开关,/EXPORT开关声明了输出函数mathadd。这样就大功告成了,可以被其他语言引入,例如在VB中,只需要: Private Declare Function mathadd Lib "e:\vbdll\ProjectOK.dll" (ByVal a As Long, ByVal b As Long) As Long

下面段代码只声明了 mathadd 这一个输出函数,要是在我的DLL中有三个或者更多的函数,又应该如何来写 函数名字: dataadd dataread

Link2.exe "e:\vbdll\Class1.obj" "e:\vbdll\Module1.obj" "e:\vbdll\Project1.obj" "E:\Program Files\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /ENTRY:__vbaS /EXPORT:mathadd /OUT:"e:\vbdll\ProjectOK.dll" /BASE:0x11000000 /SUBSYSTEM:WINDOWS,4.0 /VERS

最佳答案

VB从6.0到2008都可以创建DLL.只是方法不一样而已.


这个MS已经在MSDN公布好多年了.

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
找个防病毒软件
苏州城外的寒山寺依稀可见。意思相应诗句是什
求诱奴娇番外
数学好的来看下 解方程的
SD卡(手机内存大卡)插电脑上打不开??
求一首爱情藏头诗《杨福林》
宝蓝阁是粉丝网还是官网啊!Cy地址是什么意思
10年要换什么样的发型呢..
河北省土木工程技术研究中心地址在哪,我要去
玻璃锅糊底了怎么清洗,软玻璃用久了会模糊 怎
要不要剪回短发呢、
认证进项太多,一直不交税怎么办
内畔学校地址在哪,我要去那里办事
什么是会审会签
黄岩最后一班前往天台的汽车是几点,火车有没
推荐资讯
NBA总冠军是哪个队
班主任评语小学三年级,小学三年级的。家长评
潍坊市峡山区太保庄街道
富民沁朋食品配送中心在什么地方啊,我要过去
永昌面馆地址在哪,我要去那里办事
年轻就是资本下一句,年轻就是资本,对吗?
更是如此是什么意思,一向如此是什么意思
SIM营业厅注册不了怎么办
我想在网上开店,我应该怎么寻找货源
一个人囿一个东西,十二亿人也只有十二个东西
为什么就成了这样?
跪求!!! 最终幻想9的修改器!!!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?