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

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

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

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

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

***、將 C 或 C++ 函數(shù)用 C# 徹底改寫(xiě)一遍,這樣整個(gè)項(xiàng)目代碼比較統(tǒng)一,維護(hù)也方便一些。但是盡管微軟以及某些書(shū)籍說(shuō),C# 和 C++ 如何接近,但是改寫(xiě)起來(lái)還是很痛苦的事情,特別是 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)鏈接庫(kù),封裝的過(guò)程簡(jiǎn)單,工作量不大。因此我決定采用C#實(shí)現(xiàn)加載動(dòng)態(tài)庫(kù)的方法實(shí)現(xiàn),于是產(chǎn)生了在 C# 中如何調(diào)用自定義的動(dòng)態(tài)鏈接庫(kù)問(wèn)題,我在網(wǎng)上搜索相關(guān)主題,發(fā)現(xiàn)一篇調(diào)用系統(tǒng) API 的文章,但是沒(méi)有說(shuō)明如何解決此問(wèn)題,在 MSDN 上也沒(méi)有相關(guān)詳細(xì)說(shuō)明。基于此,我決定自己從簡(jiǎn)單出發(fā),逐步試驗(yàn),看看能否達(dá)到自己的目標(biāo)。

(說(shuō)明一點(diǎn):我這里改寫(xiě)為什么很怕麻煩,我改寫(xiě)的代碼是變長(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)庫(kù),類型的匹配,動(dòng)態(tài)鏈接庫(kù)函數(shù)導(dǎo)出的定義,這個(gè)不需要多說(shuō),大家參考下面宏定義即可:

  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)完成,說(shuō)明在C#中能夠調(diào)用自定義的動(dòng)態(tài)鏈接庫(kù)函數(shù)。

第二步,我定義了字符串操作的函數(shù)(簡(jiǎn)單起見(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é)任編輯:佚名 來(lái)源: 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)鏈接庫(kù)

2009-07-31 17:01:21

C#存取Access數(shù)

2009-08-17 17:42:57

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

2009-08-25 12:50:32

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

2009-06-24 17:32:40

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

2009-08-31 09:44:23

C# Employee

2009-09-03 11:15:38

C#設(shè)置Coopera

2009-07-31 14:08:54

C# 匿名函數(shù)

2009-08-18 17:29:02

C#使用指針

2009-08-13 15:18:23

C#文件上傳

2009-08-18 09:26:07

C#線程功能

2009-08-25 16:36:16

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

2009-09-01 09:45:49

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

2009-08-17 09:57:00

C# Windows

2009-08-20 16:28:45

C#匿名方法

2009-08-25 16:49:44

C#使用if語(yǔ)句

2009-09-03 10:42:16

C# Employee

2009-08-25 10:08:39

C# MyData對(duì)象

2009-08-24 18:09:13

C#構(gòu)造函數(shù)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产激情网 | 91精品久久久| 欧美国产视频一区二区 | 久久久久久久久久久91 | 成人精品一区二区三区 | 99久久精品免费看国产四区 | 成人免费视频一区二区 | 国产成人精品福利 | 日韩欧美理论片 | 欧日韩在线 | 中文字幕亚洲免费 | 91视视频在线观看入口直接观看 | 精品国产99 | 超碰人人91 | 91久久精品一区二区二区 | www.日韩欧美| 亚洲精品久久久久久一区二区 | 男人久久天堂 | 亚洲免费网 | 草草视频在线观看 | 久久久久久久久久久久久久av | 中文字幕免费在线观看 | 中文字幕日韩欧美一区二区三区 | 两性午夜视频 | 欧美日韩视频一区二区 | 精品久久久久久久久久久久久久 | 久久久久久久久一区 | 狠狠撸在线视频 | 欧美久久久久久久 | 免费成人在线网站 | 国产网站在线免费观看 | 精品国产一区二区三区久久久四川 | 亚洲超碰在线观看 | 亚洲精品久久久久久国产精华液 | av片毛片| 国产精品日韩欧美一区二区 | 91一区| 精品久久久久一区二区国产 | h片在线免费看 | 97在线播放 | 亚洲日韩中文字幕一区 |