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

C#調用DLL函數方法(上)

開發 后端
本文介紹了C#調用DLL的方法,供大家參考。

首先,理解托管代碼與非托管代碼的區別:

1.托管代碼所申請的資源統一由.Net Framework管理,你不用操心,非托管代碼所申請的內存等資源則需要你手動去釋放  

2.非托管程序運行會很快,是二進制的,托管程序好寫,但是速度就差的很多,資源會用的很多

3.“程序"一般都是在對操作系統進行直接或者間接的操作  

"托管程序"是需要通過訪問公共語言運行時(cls)才能訪問操作系統的程序,而“非托管程序”不用通過訪問公共語言運行時(cls)可以直接訪問操作系統的程序  

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

VC++寫托管的是要用.net的庫,因為我們沒有用.net,所以只用了非托管方式。

 (一) C#調用DLL中的非托管函數一般方法

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

[DLLImport(“DLL文件”)]

修飾符 extern 返回變量類型 方法名稱 (參數列表)

其中:

DLL文件:包含定義外部方法的庫文件。

修飾符: 訪問修飾符,除了abstract以外在聲明方法時可以使用的修飾符。

返回變量類型:在DLL文件中你需調用方法的返回變量類型。

方法名稱:在DLL文件中你需調用方法的名稱。

參數列表:在DLL文件中你需調用方法的列表。

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

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

DLL文件必須位于程序當前目錄或系統定義的查詢路徑中(即:系統環境變量中Path所設置的路徑)。

返回變量類型、方法名稱、參數列表一定要與DLL文件中的定義相一致。

其它可選的 DllImportAttribute 屬性:

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

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

ExactSpelling 指示 EntryPoint 是否必須與指示的入口點的拼寫完全匹配,如:ExactSpelling=false;

PreserveSig指示方法的簽名應當被保留還是被轉換, 如:PreserveSig=true;

CallingConvention指示入口點的調用約定, 如:CallingConvention=CallingConvention.Winapi;

此外,關于“數據封送處理”及“封送數字和邏輯標量”請參閱其它一些文章。

舉例:

New file,選擇visual C# Class。在文件中,創建一個public的類。把待測試的函數在這個類中作聲明。

  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為待測試的dll名稱,xx為dll中提供的方法函數。若要使用其它函數名,可以使用EntryPoint屬性設置。

如何用DllImport調用DLL中的非托管函數,但是這個是全局的函數,假若DLL中的非托管函數有一個靜態變量S,每次調用這個函數的時候,靜態變量S就自動加1。結果,當需要重新計數時,就不能得出想要的結果。所以,要注意啊,用DllImport調用DLL中的非托管函數是全局的、靜態的函數。

以上介紹的就是C#調用DLL函數方法(上),剩下的內容將在C#調用DLL函數方法(下)中繼續給大家講解。

【編輯推薦】

  1. C#自定義事件步步 通
  2. 如何在C#中使用存儲過程(SQL Server 2000)
  3. 存儲過程自動轉成C#源碼過程
  4. C#事件處理和自定義事件
  5. 通過C#反射特性查看自定義特性
責任編輯:book05 來源: csdn
相關推薦

2009-08-05 09:40:02

C#調用DLL函數

2009-08-07 17:22:36

C#調用dll導出函數

2009-08-03 12:57:27

C#調用DLL

2009-08-05 09:09:14

C#調用VC DLL接

2011-04-08 09:52:44

C++C#DLL

2009-07-31 14:54:48

dll函數C#導出

2009-07-31 17:28:35

C#語言調用DLL

2009-08-05 17:06:39

ASP調用C# DLL

2009-08-07 17:12:07

C# DLL函數

2009-08-05 16:41:36

C#調用VC dll

2009-09-02 17:16:01

冒泡排序

2009-08-05 15:04:14

C# dll注入

2009-08-05 16:49:42

C#中調用dll

2009-08-05 09:22:43

C#調用VC DLL

2009-08-31 16:33:28

C#調用Dispose

2009-08-31 18:05:14

C#調用WalkTre

2009-07-31 16:12:10

Windows APIC#

2009-08-25 10:59:00

C#調用函數顯示值

2009-08-14 09:15:28

C#調用構造函數

2009-08-03 13:34:57

C#調用Windows
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99国产精品久久久久老师 | 国产福利资源在线 | 中文字幕第一页在线 | 亚洲第一天堂无码专区 | 久久33| 一区二区在线 | 粉嫩一区二区三区性色av | 精品一区视频 | 久久国产精品免费一区二区三区 | 丁香五月网久久综合 | 夜夜骑首页 | 国产sm主人调教女m视频 | 欧美性极品xxxx做受 | 欧美国产精品一区二区 | 亚洲精品自在在线观看 | 亚洲 欧美 在线 一区 | 免费国产成人av | 91精品国产91久久综合桃花 | 免费毛片网 | 新av在线| 欧美xxxx黑人又粗又长 | 成人精品鲁一区一区二区 | 91色视频在线 | 色综合久 | 亚洲综合视频 | 欧美在线国产精品 | www.国产精品 | 一级黄色淫片 | 一级大黄| 九九综合 | 国产一区二区三区在线看 | 亚洲精品乱码久久久久久按摩 | 91久久视频 | 欧美精品一区二区三区四区五区 | 日本三级全黄三级三级三级口周 | 日本精品一区 | 综合一区二区三区 | 欧美v在线观看 | аⅴ资源新版在线天堂 | 日韩乱码在线 | 国产精品久久久亚洲 |