自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#實(shí)現(xiàn)加載動(dòng)態(tài)庫概述

開發(fā) 后端
這里介紹C#實(shí)現(xiàn)加載動(dòng)態(tài)庫,在開發(fā)新項(xiàng)目中使用了新的語言開發(fā) C# 和新的技術(shù)方案 WEB Service,但是在新項(xiàng)目中,一些舊的模塊需要繼續(xù)使用。

C#語言有很多值得學(xué)習(xí)的地方,這里我們主要介紹C#實(shí)現(xiàn)加載動(dòng)態(tài)庫,包括介紹將 C 或 C++ 函數(shù)封裝成 COM等方面。

在開發(fā)新項(xiàng)目中使用了新的語言開發(fā) C# 和新的技術(shù)方案 WEB Service,但是在新項(xiàng)目中,一些舊的模塊需要繼續(xù)使用,一般是采用 C 或 C++ 或 Delphi 編寫的,如何利用舊模塊對(duì)于開發(fā)人員來說,有三種可用方法供選擇:

***、將 C 或 C++ 函數(shù)用 C# 徹底改寫一遍,這樣整個(gè)項(xiàng)目代碼比較統(tǒng)一,維護(hù)也方便一些。但是盡管微軟以及某些書籍說,C# 和 C++ 如何接近,但是改寫起來還是很痛苦的事情,特別是 C++ 里的指針和內(nèi)存操作;

第二、將 C 或 C++ 函數(shù)封裝成 COM,在 C# 中調(diào)用COM 比較方便,只是在封裝時(shí)需要處理 C 或 C++ 類型和 COM 類型之間的轉(zhuǎn)換,也有一些麻煩,另外COM 還需要注冊(cè),注冊(cè)次數(shù)多了又可能導(dǎo)致混亂;

第三、將 C 或 C++ 函數(shù)封裝成動(dòng)態(tài)鏈接庫,封裝的過程簡(jiǎn)單,工作量不大。因此我決定采用C#實(shí)現(xiàn)加載動(dòng)態(tài)庫的方法實(shí)現(xiàn),于是產(chǎn)生了在 C# 中如何調(diào)用自定義的動(dòng)態(tài)鏈接庫問題,我在網(wǎng)上搜索相關(guān)主題,發(fā)現(xiàn)一篇調(diào)用系統(tǒng) API 的文章,但是沒有說明如何解決此問題,在 MSDN 上也沒有相關(guān)詳細(xì)說明?;诖耍覜Q定自己從簡(jiǎn)單出發(fā),逐步試驗(yàn),看看能否達(dá)到自己的目標(biāo)。

(說明一點(diǎn):我這里改寫為什么很怕麻煩,我改寫的代碼是變長(zhǎng)加密算法函數(shù),代碼有600多行,對(duì)算法本身不熟悉,算法中指針和內(nèi)存操作太多,要想保證算法正確,最可行的方法就是少動(dòng)代碼,否則只要有一點(diǎn)點(diǎn)差錯(cuò),就不能肯定算法與以前兼容)

C#技術(shù)實(shí)現(xiàn)

下面看看如何逐步C#實(shí)現(xiàn)加載動(dòng)態(tài)庫,類型的匹配,動(dòng)態(tài)鏈接庫函數(shù)導(dǎo)出的定義,這個(gè)不需要多說,大家參考下面宏定義即可:

  1. #define LIBEXPORT_API extern "C" __declspec(dllexport)  

***步,我先從簡(jiǎn)單的調(diào)用出發(fā),定義了一個(gè)簡(jiǎn)單的函數(shù),該函數(shù)僅僅實(shí)現(xiàn)一個(gè)整數(shù)加法求和:

  1. public class RefComm  
  2. {  
  3. [DllImport("LibEncrypt.dll",  
  4. EntryPoint=" mySum ",  
  5. CharSetCharSet=CharSet.Auto,
    CallingConventionCallingConvention=CallingConvention.StdCall)]  
  6. public static extern int mySum (int a,int b);  

運(yùn)行查看結(jié)果iSum為5,調(diào)用正確。***步試驗(yàn)完成,說明在C#中能夠調(diào)用自定義的動(dòng)態(tài)鏈接庫函數(shù)。

第二步,我定義了字符串操作的函數(shù)(簡(jiǎn)單起見,還是采用前面的函數(shù)名),返回結(jié)果為字符串:

  1. public class RefComm  
  2. {  
  3. [DllImport("LibEncrypt.dll",  
  4. EntryPoint=" mySum ",  
  5. CharSetCharSet=CharSet.Auto,  
  6. CallingConventionCallingConvention=CallingConvention.StdCall)]  
  7. public static extern string mySum (string a, string b);  

【編輯推薦】

  1. C#字符ASCII碼學(xué)習(xí)經(jīng)驗(yàn)
  2. C#數(shù)值類型之間的轉(zhuǎn)換概述
  3. 日期型數(shù)據(jù)轉(zhuǎn)換成C#長(zhǎng)整型數(shù)據(jù)
  4. C#查看Excel對(duì)象模型分析
  5. C#日期型數(shù)據(jù)簡(jiǎn)單剖析
責(zé)任編輯:佚名 來源: csdn
相關(guān)推薦

2009-08-12 11:33:23

C#實(shí)現(xiàn)文件下載

2009-08-28 16:19:30

C#實(shí)現(xiàn)修改動(dòng)態(tài)鏈接庫

2009-08-25 12:50:32

數(shù)據(jù)庫常用C#代碼

2009-07-31 17:01:21

C#存取Access數(shù)

2009-08-17 17:42:57

C#數(shù)據(jù)庫操作類

2009-06-24 17:32:40

動(dòng)態(tài)加載AppDoma

2009-08-25 16:36:16

C#進(jìn)行數(shù)據(jù)庫編程

2009-09-01 09:45:49

Visual C#對(duì)數(shù)

2009-07-31 14:08:54

C# 匿名函數(shù)

2009-08-13 15:18:23

C#文件上傳

2009-08-18 09:26:07

C#線程功能

2009-08-18 17:29:02

C#使用指針

2009-08-31 09:44:23

C# Employee

2009-09-03 11:15:38

C#設(shè)置Coopera

2009-08-17 09:57:00

C# Windows

2009-08-20 16:28:45

C#匿名方法

2009-08-24 18:09:13

C#構(gòu)造函數(shù)

2009-08-25 10:08:39

C# MyData對(duì)象

2009-08-25 16:49:44

C#使用if語句

2009-09-03 10:42:16

C# Employee
點(diǎn)贊
收藏

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