成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#調(diào)用DLL函數(shù)方法(上)

開(kāi)發(fā) 后端
本文介紹了C#調(diào)用DLL的方法,供大家參考。

首先,理解托管代碼與非托管代碼的區(qū)別:

1.托管代碼所申請(qǐng)的資源統(tǒng)一由.Net Framework管理,你不用操心,非托管代碼所申請(qǐng)的內(nèi)存等資源則需要你手動(dòng)去釋放  

2.非托管程序運(yùn)行會(huì)很快,是二進(jìn)制的,托管程序好寫(xiě),但是速度就差的很多,資源會(huì)用的很多

3.“程序"一般都是在對(duì)操作系統(tǒng)進(jìn)行直接或者間接的操作  

"托管程序"是需要通過(guò)訪問(wèn)公共語(yǔ)言運(yùn)行時(shí)(cls)才能訪問(wèn)操作系統(tǒng)的程序,而“非托管程序”不用通過(guò)訪問(wèn)公共語(yǔ)言運(yùn)行時(shí)(cls)可以直接訪問(wèn)操作系統(tǒng)的程序  

4.vb.net,C#等寫(xiě)的程序是托管程序,VC++可以寫(xiě)托管程序,如果用到了內(nèi)存管理,則只能編譯為非托管程序

VC++寫(xiě)托管的是要用.net的庫(kù),因?yàn)槲覀儧](méi)有用.net,所以只用了非托管方式。

 (一) C#調(diào)用DLL中的非托管函數(shù)一般方法

首先,應(yīng)該在C#語(yǔ)言源程序中聲明外部方法,其基本形式是:

[DLLImport(“DLL文件”)]

修飾符 extern 返回變量類(lèi)型 方法名稱(chēng) (參數(shù)列表)

其中:

DLL文件:包含定義外部方法的庫(kù)文件。

修飾符: 訪問(wèn)修飾符,除了abstract以外在聲明方法時(shí)可以使用的修飾符。

返回變量類(lèi)型:在DLL文件中你需調(diào)用方法的返回變量類(lèi)型。

方法名稱(chēng):在DLL文件中你需調(diào)用方法的名稱(chēng)。

參數(shù)列表:在DLL文件中你需調(diào)用方法的列表。

注意:需要在程序聲明中使用System.Runtime.InteropServices命名空間。

DllImport只能放置在方法聲明上。

DLL文件必須位于程序當(dāng)前目錄或系統(tǒng)定義的查詢(xún)路徑中(即:系統(tǒng)環(huán)境變量中Path所設(shè)置的路徑)。

返回變量類(lèi)型、方法名稱(chēng)、參數(shù)列表一定要與DLL文件中的定義相一致。

其它可選的 DllImportAttribute 屬性:

CharSet 指示用在入口點(diǎn)中的字符集,如:CharSet=CharSet.Ansi;

SetLastError 指示方法是否保留 Win32"上一錯(cuò)誤",如:SetLastError=true;

ExactSpelling 指示 EntryPoint 是否必須與指示的入口點(diǎn)的拼寫(xiě)完全匹配,如:ExactSpelling=false;

PreserveSig指示方法的簽名應(yīng)當(dāng)被保留還是被轉(zhuǎn)換, 如:PreserveSig=true;

CallingConvention指示入口點(diǎn)的調(diào)用約定, 如:CallingConvention=CallingConvention.Winapi;

此外,關(guān)于“數(shù)據(jù)封送處理”及“封送數(shù)字和邏輯標(biāo)量”請(qǐng)參閱其它一些文章。

舉例:

New file,選擇visual C# Class。在文件中,創(chuàng)建一個(gè)public的類(lèi)。把待測(cè)試的函數(shù)在這個(gè)類(lèi)中作聲明。

  1. public class ClassName     
  2.  
  3. {        
  4.  
  5.    [DllImport("xxx.dll", EntryPoint = "xx")]  
  6.  
  7.         public static extern int StartVideo(int nDevNum, int SwitchingChans, IntPtr Main, IntPtr hwndPreview);  
  8.  
  9. }  
  10.  

Xxx為待測(cè)試的dll名稱(chēng),xx為dll中提供的方法函數(shù)。若要使用其它函數(shù)名,可以使用EntryPoint屬性設(shè)置。

如何用DllImport調(diào)用DLL中的非托管函數(shù),但是這個(gè)是全局的函數(shù),假若DLL中的非托管函數(shù)有一個(gè)靜態(tài)變量S,每次調(diào)用這個(gè)函數(shù)的時(shí)候,靜態(tài)變量S就自動(dòng)加1。結(jié)果,當(dāng)需要重新計(jì)數(shù)時(shí),就不能得出想要的結(jié)果。所以,要注意啊,用DllImport調(diào)用DLL中的非托管函數(shù)是全局的、靜態(tài)的函數(shù)。

以上介紹的就是C#調(diào)用DLL函數(shù)方法(上),剩下的內(nèi)容將在C#調(diào)用DLL函數(shù)方法(下)中繼續(xù)給大家講解。

【編輯推薦】

  1. C#自定義事件步步 通
  2. 如何在C#中使用存儲(chǔ)過(guò)程(SQL Server 2000)
  3. 存儲(chǔ)過(guò)程自動(dòng)轉(zhuǎn)成C#源碼過(guò)程
  4. C#事件處理和自定義事件
  5. 通過(guò)C#反射特性查看自定義特性
責(zé)任編輯:book05 來(lái)源: csdn
相關(guān)推薦

2009-08-05 09:40:02

C#調(diào)用DLL函數(shù)

2009-08-07 17:22:36

C#調(diào)用dll導(dǎo)出函數(shù)

2009-08-03 12:57:27

C#調(diào)用DLL

2009-08-05 09:09:14

C#調(diào)用VC DLL接

2011-04-08 09:52:44

C++C#DLL

2009-07-31 14:54:48

dll函數(shù)C#導(dǎo)出

2009-07-31 17:28:35

C#語(yǔ)言調(diào)用DLL

2009-08-05 17:06:39

ASP調(diào)用C# DLL

2009-08-07 17:12:07

C# DLL函數(shù)

2009-08-05 16:41:36

C#調(diào)用VC dll

2009-09-02 17:16:01

冒泡排序

2009-08-05 15:04:14

C# dll注入

2009-08-05 09:22:43

C#調(diào)用VC DLL

2009-08-05 16:49:42

C#中調(diào)用dll

2009-08-31 16:33:28

C#調(diào)用Dispose

2009-08-31 18:05:14

C#調(diào)用WalkTre

2009-08-03 13:34:57

C#調(diào)用Windows

2009-08-14 09:15:28

C#調(diào)用構(gòu)造函數(shù)

2009-07-31 16:12:10

Windows APIC#

2009-08-25 10:59:00

C#調(diào)用函數(shù)顯示值
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品欧美一区免费观看α√ | 欧美激情久久久 | 国产精品久久久久久久久久久久久久 | 久久精品亚洲成在人线av网址 | 日韩av一区二区在线观看 | 91传媒在线观看 | 精品一区二区免费视频 | 久久激情视频 | 国产日韩精品在线 | av不卡一区 | 超碰免费在线 | 真人女人一级毛片免费播放 | 久久综合久久综合久久 | 亚洲一区中文字幕 | 国产精品视频一 | 一本久久a久久精品亚洲 | 国产精品视频导航 | 91一区二区三区在线观看 | 操人网站| 国产精品久久久久久久久免费软件 | 亚洲一区二区免费 | 在线播放亚洲 | 中文一区| 久一久| 欧美精品在线免费观看 | 日韩色视频 | 国产伦精品一区二区三区照片91 | 一区二区三区免费 | 亚洲国产精品99久久久久久久久 | 成人夜晚看av | 国产精品国产精品国产专区不片 | xxxxxx国产| 久久久精品一区二区三区 | 天堂影院av | www.亚洲一区二区三区 | 精品成人在线视频 | 色一情一乱一伦一区二区三区 | 久久伊人在| 久久精品国产一区二区三区不卡 | 久久亚洲国产精品日日av夜夜 | 成人免费在线观看 |