VB.net编写的dll,供vb6调用时dll中的函数不可见?在您的代码中,您已经成功使用了RegAsm命令将DLL注册为COM组件,并在VB6中成功引用了该组件的类型库文件(TLB文件) 。此外,您还在VB6代码中声明了一个YCImageDo类型的对象,并成功创建了该对象 。
但是,当您尝试使用YCImageDo对象的属性和方法时,却发现这些成员不可见 。这可能是因为在编写DLL代码时您没有正确地声明这些成员的可见性 。
在VB.NET中,您可以使用"Public"关键字来声明一个类型的成员(属性、方法、过程等)对外可见 , 而使用"Private"关键字则声明该成员仅在类型内可见 。如果您希望YCImageDo类型的成员在VB6代码中可见 , 则应将这些成员声明为Public类型 。
例如 , 如果您希望YCImageDo类型拥有一个名为"GetImage"的方法,则可以在DLL代码中按如下方式声明该方法:
Public Function GetImage() As String
' 在这里编写方法的代码
End Function
同样,如果您希望YCImageDo类型拥有一个名为"ImagePath"的属性,则可以在DLL代码中按如下方式声明该属性:
Public Property ImagePath As String
怎样用VB.NET写和调用DLl窗体一、带窗体的dll创建
1、先新建 类库(testdll),在项目中添加两个窗体form1(主窗体)、form2,为了与后面的调用区分分别命名为fm1,fm2;并在fm1窗体中添加一个按钮用来调用fm2如下图
2、在fm1窗体代码中先引用fm2,按钮代码调用fm2.如图
3、生成dll,(class1.vb中不需要写任何代码)
二、调用dll
1、新建 一个windows应用程序并添加一个按钮用来调用dll中的窗体,选 择 “项目”-“添加引用”,选择刚才创建的testdll
2、窗体代码中先引用testdll,再定义一个testdll中的fm1对象 , 最后执行对象的show方法
3、运行结果如下:
VB.NET EXE怎么调用指定的DLL一般VB.NET调用DLL可以通过Declare 语句在模块级用于声明对动态链接库 (DLL) 中的外部过程的引用 。
Private Declare Sub
myFunc1 Lib "mylib.dll"
(ByVal strName As String)
但是vb.net中dll过程,VB.NET,C#.NET创建的DLL是个类库,不能生成标准的 DLL 文件 , 不能采用declare ()的方式 。应该在解决方案资源管理器下的需要引用的项目的引用栏点击鼠标右键--添加对这个类库[mylib.dll]的引用即可 。
以下为VB.NET调用DLL代码示例:
DllImport("kcomm.dll", CharSetCharSet:
=CharSet.Ansi, SetlastError:=True)
Private Shared Function gettxt(ByVal
port As Integer, ByVal wait As
Integer, ByVal _date As Long,
ByVal _time As Long, ByVal
filename As String) As Integer
End Function
根据实际情况更改你的DLL名称、函数名、参数名和类型 。
VB.NET调用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
【vb.net中dll过程 vbnet dll接口编写】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 = ab
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.net中dll过程他语言引入,例如在VB中,只需要:
Private Declare Function mathadd
Lib "e:\\vbdll\\ProjectOK.dll"
(ByVal a As Long, ByVal b As
Long) As Long
vb 如何调用 NET写的DLL?VB.net语言
1、创建组件定义
新建一个Probject,在代码中写入:
PublicInterfaceIDemo
FunctionTest()AsString
EndInterface
2、实现组件定义
新建一个Probject,添加对上述Probject的引用后,在代码中写入
PublicClassDemo
ImplementsIDemo.IDemo
PublicFunctionTest()AsStringImplementsIDemo.IDemo.Test
Test="HelloWorld!"
EndFunction
EndClass
3、编译出Demo.dll组件
4、使用.net的工具VisualStudio.Net2003CommandPrompt,输入以下命令
RegasmDemo.dll/tlb:Demo.tlb
把Demo.dll注册为一个com对象(这个com对象不等同于普通的用VB编写的Com对象) , 并导出类型库Demo.tlb
5、新建一个VB工程,添加对Demo.tlb和IDemo.tlb的引用
6、定义两个全局变量
DimvbDemoAsDemo.Demo
DimvbIDemoasIDemo.IDemo
7、在Form_Load事件中初始化
'初始化实体类
SetvbDemo=NewDemo.Demo
'将实体类引用到抽象类
SetvbIDemo=vbDemo
8、然后,我们就可以用vbIDemo.Test这样的方法了
vb.net中dll过程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vbnet dll接口编写、vb.net中dll过程的信息别忘了在本站进行查找喔 。
推荐阅读
- 在手机里怎么打开u盘启动不了,手机怎么打不开u盘装系统
- 动物格斗大作战游戏下载,动物格斗大师图片
- b站田英章直播,田英章抖音视频
- 口袋妖怪go改变语言 口袋妖怪go改变语言模式
- 荣耀30s可以使用鸿蒙系统,荣耀30能用鸿蒙系统
- 联想服务器查询,联想服务器查询正品
- 天津网站制作公司排名,天津网站制作公司排名前十
- 怎么学好vb.net 怎么学好英语
- 安卓没下载器,视频下载器安卓