欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C#中[ImportDll()]有什么用-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“C#中[ImportDll()]有什么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C#中[ImportDll()]有什么用”這篇文章吧。

站在用戶的角度思考問題,與客戶深入溝通,找到崆峒網(wǎng)站設(shè)計(jì)與崆峒網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋崆峒地區(qū)。

在做公司的一個C#項(xiàng)目中,要寫一個webservice提供一個下載方法,之前公司有過,但是要整改,于是這種鳥屎攤子又交給了我,其中一個密文流的下載中要應(yīng)用我們小組另一伙人用C++寫的四個dll, 這些DLL是由我們自己編寫的,非.NET 托管,這是一個麻煩事;

如果用 IDE往工程里add reference時,它會提示這幾個dll是沒有注冊的,不是.NET托管的。好吧,順便補(bǔ)充一下.NET托管和非托管。

具體官方術(shù)語是:

托管DLL就是能夠在公共語言運(yùn)行庫(Common Language Runtime,簡稱CLR)中能夠直接引用的,并且擴(kuò)展名為“DLL”的文件。具體所指就是封裝各種命名空間所在的DLL文件,如System.dll等。非托管DLL就是平常所的動態(tài)鏈接庫等,其中就包括了封裝所有Windows API函數(shù)的DLL文件。各種非托管DLL中的函數(shù)在公共語言運(yùn)行庫中不能直接被調(diào)用,而需要經(jīng)過.Net框架提供的“平臺調(diào)用”服務(wù)后才可以。

通俗點(diǎn)講就是:

托管Dll就在.NET環(huán)境生成的Dll文件。

非托管dll不是在.NET環(huán)境生成的dll文件。比如說用c寫的,用C++寫的。

托管Dll文件,可以在IDE通過 “add reference” 的方式,直接把托管Dll文件添加到項(xiàng)目中。然后通過 Using  Dll命名空間,來調(diào)用相應(yīng)的Dll對象 。非托管Dll文件怎么調(diào)用了,這就要用到 [ImportDll()] 這種方法了;

[ImportDll()] 這種方法是通過P/Iovoke 來調(diào)用WIN32 API。其作用是導(dǎo)入外部的函數(shù),這些函數(shù)不是由NET托管的。當(dāng)然當(dāng)使用[ImportDll()] 時,必須要引入命名空間:

using System.Runtime.InteropServices;

舉一個例子

[DllImport(@("DownloadPlaintext.dll",EntryPoint="DownloadPlaintext"))]
  static extern Boolean FileDownLoad ([MarshalAs(UnmanagedType.LPStr)] StringBuilder pstrSourceFile,
                    [MarshalAs(UnmanagedType.LPStr)] long lintFileSize,
                    bool blnEnFlag)

這個例子導(dǎo)入的就是一個 C++寫的dll,名字是DownloadPlaintext.dll,這樣寫的是相對的路徑,所以我們必須要手動的把這個dll文件拷到該項(xiàng)目的bin目錄下對應(yīng)的release或者Debug目錄中去。否則就會找不到dll,或者直接將此dll,丟到system32中去,但這樣做是不安全的;

EntryPoint是外部函數(shù) 的入口點(diǎn),可以理解為調(diào)用外部函數(shù)的那個方法,假設(shè)dll中存在DownloadPlaintext這個函數(shù)名,而項(xiàng)目中也存在的話,這樣就會有沖突,所以C#還提供了重定義外部函數(shù)方法名,(并不是該dll中的名字,只是改變其在這個項(xiàng)目文件中的使用名而已),就像上面的例子一樣,將DownloadPlaintext方法在C#這個項(xiàng)目的使用名命名為FileDownLoad ,要注意的是參數(shù)要一致,類型要一致;

MarshalAs 是指提供向非托管代碼封裝數(shù)據(jù)時的規(guī)則,上面告訴net,第一個參數(shù)要用string 類型,第三個是bool型;

這里要注意一個問題,剛開始改代碼時,調(diào)試通過了,一發(fā)到IIS,其他人根本無法成功調(diào)用這個方法,我糾結(jié)了半天,后來才找到原因!

因?yàn)槭窃谇叭嘶A(chǔ)上改代碼,沒注意前人留下的坑,這份代碼的初始者,將dll的引入路徑做成的是絕對路徑:

[DllImport(@("C:\CloudDll\DownloadPlaintext.dll",EntryPoint="DownloadPlaintext"))]

這樣的話,IIS是無法去找到這個路徑的,即使你在C:\CloudDll目錄下有這個dll,所以,要專業(yè)點(diǎn)...

以上是“C#中[ImportDll()]有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前文章:C#中[ImportDll()]有什么用-創(chuàng)新互聯(lián)
當(dāng)前地址:http://aaarwkj.com/article2/dpghoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、企業(yè)建站、響應(yīng)式網(wǎng)站、微信小程序、網(wǎng)站建設(shè)品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
黄色18禁网站在线看| 免费人成网站在线观看| 一本色道久久亚洲综合精品蜜桃| 观看亚洲一区二区三区大片| 国产精品久久黑丝诱惑| 少妇互射视频免费视频| 免费福利激情在线播放| 日本一区二区欧美亚洲国产| 国产探花猛操性感美女| 免费啪啪视频一区二区| 久久午夜av一区二区| 亚洲av污精品一区二区三区| 成人一区二区三区乱码| 国产成人精品久久久亚洲| 欧美欧成人一区二区三区a∨| 亚洲精品伦理视频在线| 免费在线观看日韩av大片| 亚洲中文字幕av每天更新| 欧美艳星一区二区三区四区 | 在线观看免费视频成人播放| 人妻少妇偷人精品免费看| 国产一级r内射视频播放| 少妇高潮试看二十分钟| 精品国产一区二区三区四不卡在线 | 中文字幕亚洲入口久久| 在线国产偷拍自拍视频| 久热视频这里只有精品99| 91麻豆亚洲国产成人久久| 美女诱惑福利视频久久久| 成人国产精品三上悠亚久久| 给我搜一个一级黄色片| 国产中文字幕精品在线观看| 亚洲一区二区三区香蕉不卡| 久久精品国产亚洲av久一一区| 97精品免费在线观看| 亚洲毛片在线免费播放| 男女午夜激情四射视频| 水蜜桃成人在线视频免费观看| 综合资源网日韩天天操| 欧美亚洲中文字幕高清| 后入式动漫在线观看|