VB.NET开发平台专为编程人员打造一个功能强大,性能稳定安全的编程环境。在这里我们先为大家想写介绍一下VB.NET调用DLL的相关方法,来让大家对这门语言有一个初步的了解,并增加大家的开发经验。
一般VB.NET调用DLL可以通过Declare 语句在模块级用于声明对动态链接库 (DLL) 中的外部过程的引用。
Private Declare Sub myFunc1 Lib "mylib.dll" (ByVal strName As String)
但是,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事件里面写下面的语句:
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
VB.NET调用DLL相关实现方法就为大家介绍到这里。
分享到:
相关推荐
在IT领域,特别是软件开发中,跨语言编程和组件重用是常见的需求,而VB.NET调用DLL(动态链接库)则是实现这一需求的关键技术之一。以下是对如何使用VB.NET调用DLL的深入解析,包括理论知识、实践操作以及常见问题...
3. **设置参数顺序**:VB.Net调用DLL时,参数的传递顺序可能与DLL中定义的不同,需要通过`CallingConvention`属性指定调用约定,如`StdCall`或`Cdecl`。 在这个特定的例子中,"WASPCN.cs"可能是VB.Net项目中的一个...
本主题聚焦于C#中实现DataMatrix二维码生成的源码,特别强调其支持VB.NET调用。 在C#中,生成DataMatrix二维码通常涉及到对图像处理、编码算法和图形库的理解。这个源码包提供了直接生成DLL(动态链接库)的方法,...
在VB.NET环境下,ZXing库提供了一个简单而强大的工具集,用于创建和解析条形码和二维码。 本文将深入探讨如何使用ZXing在VB.NET 2010中生成条形码和二维码,并进行解码和打印操作。 首先,我们需要在VB.NET项目中...
本文将详细解析如何利用VB.NET控制摄像头进行拍摄,并将捕获的图像保存为PDF或JPG格式。 首先,我们需要理解VB.NET中的摄像头访问接口。在VB.NET中,通常我们会使用Windows Media Foundation (WMF) 或者DirectShow...
本篇文章将深入解析使用VB.NET实现SSH SFTP客户端的源代码,并介绍相关技术点。 首先,理解SSH和SFTP的基础概念至关重要。SSH提供了一种加密的网络通信方式,确保数据传输过程中的安全性,防止中间人攻击。而SFTP是...
- **DLL**:这是nModbus库的动态链接库文件,供VB.NET和C#项目引用。在项目中添加引用后,可以使用nModbus提供的类和方法。 - **C#.NET**:同样,C#示例展示了如何在C#环境中使用nModbus库,实现Master和Slave的...
4. **引用控件**:在VB.NET项目中,通过“添加引用”功能可以引入外部控件或组件,使得VB.NET代码能够调用这些控件的API。在本例中,开发者需要先安装EDrawings SDK(Software Development Kit),然后在项目中添加...
标题 "USB-ID通用读卡器Vb.net示例源码.rar" 提供的是一个使用VB.NET编程语言开发的示例项目,旨在展示如何通过调用DLL动态链接库来读取RFID(射频识别)卡号。这个示例源码对于开发者来说是一个宝贵的学习资源,...
VB.NET程序通过`lua.vb`接口调用`Luadll.dll`中的函数,实现对Lua的控制和操作。 在实际应用中,`lua for vb.net`可以用于以下场景: 1. 游戏开发:Lua以其轻量级和高效的特点,常被用于游戏中的逻辑控制和脚本编写...
开发者可以调用库中的方法来构造和解析MODBUS报文。 4. **MODBUS功能码**:MODBUS功能码是请求报文中的关键部分,如0x03用于读取保持寄存器,0x06用于写单个寄存器,0x0F用于强制多个线圈等。根据描述,这个测试...
至于压缩包内的"PW.JSON.dll",这是一个动态链接库文件,是Vb.net应用程序可以直接调用的代码模块。在这个案例中,它包含了所有实现JSON解析功能的类和方法。开发者在自己的Vb.net项目中引用这个DLL后,就可以直接...
总之,VB.NET实现华视CVR-100U身份证读卡器程序开发涉及设备连接、数据解析、事件处理、异常处理和界面设计等多个方面,通过理解VB.NET的特点和使用技巧,我们可以成功地完成这个项目,实现高效、可靠的身份证信息...
本文将深入探讨如何使用VB.NET来编写一个植物大战僵尸的游戏修改器,通过源代码实例解析其中的关键技术和方法。 一、API与内存操作基础 API(Application Programming Interface)是操作系统或库提供的函数接口,...
通过引用这个库,开发者可以在VB.NET程序中调用相关的类和方法来处理二维码。 其次,"zxing.dll"是Zxing(又称“ZXing.Net”)的.NET版本,这是一个流行的开源二维码和条形码扫描库。Zxing最初是Java项目,但已被...
### VB.NET 让窗体的图片变成圆角 在日常的软件开发中,美观的界面设计对于提升用户体验具有重要作用。...通过以上方法,我们可以在 VB.NET 中轻松地实现窗体的圆角效果,从而提升用户界面的美观度和用户体验。
这个DLL通常包含了一系列的函数和方法,允许VB.NET代码调用以发送请求、接收GPS数据并进行解析。 使用VB.NET读取GPS数据时,首先要进行设备初始化和连接。这通常涉及查找可用的GPS设备,然后创建一个对象实例来代表...
在“TcpClient VB2010”和“TcpClient C#2010”项目中,可能包含了使用vb.net和vc.net(C#)实现的以太网通讯示例代码。这些示例通常会演示如何初始化TCP连接,如何构造和解析数据包,以及如何处理通讯异常。 总的...
在VB.NET中,通过引入DLL,可以使用`Imports`语句来导入相关的命名空间,然后通过`New`关键字实例化DLL中的类,调用其公开的方法。例如,如果有一个名为`PLCConnection`的类在PLC1.dll中,你可以这样使用: ```vb...
在VB.NET中,可以使用P/Invoke技术调用这个库的函数,实现与C/C++代码的交互。 解码krc文件的基本步骤可能如下: 1. **读取krc文件**:使用VB.NET的File类或Stream类读取文件内容。 2. **解压数据**:通过zlib.dll...