日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
VB.NET調(diào)用DLL實(shí)現(xiàn)方法解析

VB.NET開發(fā)平臺(tái)專為編程人員打造一個(gè)功能強(qiáng)大,性能穩(wěn)定安全的編程環(huán)境。在這里我們先為大家想寫介紹一下VB.NET調(diào)用DLL的相關(guān)方法,來讓大家對(duì)這門語言有一個(gè)初步的了解,并增加大家的開發(fā)經(jīng)驗(yàn)。

創(chuàng)新互聯(lián)是專業(yè)的遼中網(wǎng)站建設(shè)公司,遼中接單;提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行遼中網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

一般VB.NET調(diào)用DLL可以通過Declare 語句在模塊級(jí)用于聲明對(duì)動(dòng)態(tài)鏈接庫 (DLL) 中的外部過程的引用。

 
 
 
  1. Private Declare Sub 
    myFunc1 Lib "mylib.dll" 
    (ByVal strName As String) 

但是,VB.NET,C#.NET創(chuàng)建的DLL是個(gè)類庫,不能生成標(biāo)準(zhǔn)的 DLL 文件,不能采用declare ()的方式。應(yīng)該在解決方案資源管理器下的需要引用的項(xiàng)目的引用欄點(diǎn)擊鼠標(biāo)右鍵-->添加對(duì)這個(gè)類庫[mylib.dll]的引用即可。

以下為VB.NET調(diào)用DLL代碼示例:

 
 
 
  1. < 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  
  2. End Function 

根據(jù)實(shí)際情況更改你的DLL名稱、函數(shù)名、參數(shù)名和類型。

VB.NET調(diào)用DLL的只是COM組件,無法作為輸出函數(shù)的DLL,其實(shí)這只是個(gè)錯(cuò)誤的說法。其實(shí)MS非常狡猾,如果你是個(gè)VB瘋狂發(fā)燒友的話,應(yīng)該早就狂試出這種可以創(chuàng)建輸出函數(shù)的DLL的方法。

VB編譯文件實(shí)際上采取了兩次編譯的方法,首先是調(diào)用C2.exe產(chǎn)生*.OBJ文件,然后調(diào)用Link.EXE連接。如果在LINK的時(shí)候添加EXPORT選項(xiàng),實(shí)際上是可以輸出函數(shù)的。但是,在VB的工程選項(xiàng)中將這些屏蔽了。而且過分的是:VB在Build完成后會(huì)將OBJ文件刪除,這樣就無法手動(dòng)通過Link來創(chuàng)建我們需要的DLL了。不過我找到一個(gè)比較齷鹺的變通的方法,就是先創(chuàng)建一個(gè)Exe工程,在Form_Load事件里面寫下面的語句:

 
 
 
  1. Sub Main   
  2. If MsgBox("哈哈", 
    vbOKCancel) = vbOK Then   
  3. Shell "link2.exe " 
    & Command$   
  4. End If   
  5. End Sub  

然后編譯為L(zhǎng)inkTemp.EXE,接下來將LINK.EXE改名為L(zhǎng)ink2.exe,將LinkTemp.EXE改名為L(zhǎng)ink.EXE。這樣在VB調(diào)用Link.EXE時(shí)會(huì)彈出對(duì)話框,處理就會(huì)中斷。這時(shí)就可以有機(jī)會(huì)將OBJ文件拷貝出來了。

然后我創(chuàng)建了一個(gè)ActiveX DLL工程,在這個(gè)工程里面添加一個(gè)Module并創(chuàng)建一個(gè)Public函數(shù)mathadd:

 
 
 
  1. Public Function mathadd
    (ByVal a As Long, ByVal 
    b As Long) As Long   
  2. mathadd = a + b   
  3. End Function  

編譯這個(gè)工程,在Link的時(shí)候就會(huì)中斷。然后把創(chuàng)建的Class1.obj、Module1.obj、Project1.obj備份出來。然后就可以調(diào)用Link2.exe連接OBJ到DLL了,我的連接代碼是:

 
 
 
  1. 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開關(guān),/EXPORT開關(guān)聲明了輸出函數(shù)mathadd。這樣就大功告成了,可以被其他語言引入,例如在VB中,只需要:

 
 
 
  1. Private Declare Function mathadd 
    Lib "e:\\vbdll\\ProjectOK.dll"
     (ByVal a As Long, ByVal b As
     Long) As Long 

VB.NET調(diào)用DLL相關(guān)實(shí)現(xiàn)方法就為大家介紹到這里。

【編輯推薦】

  1. 如何正確實(shí)現(xiàn)VB.NET重載Windows控件
  2. VB.NET類添加方法具體操作技巧總結(jié)
  3. VB.NET New關(guān)鍵字相關(guān)作用剖析
  4. VB.NET Sub過程簡(jiǎn)單分析
  5. VB.NET自定義類型實(shí)現(xiàn)方法介紹

分享題目:VB.NET調(diào)用DLL實(shí)現(xiàn)方法解析
瀏覽地址:http://www.dlmjj.cn/article/copjsio.html