最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#調(diào)用C++版本dll時的類型轉(zhuǎn)換需要注意的問題小結(jié)

 更新時間:2010年04月15日 00:09:58   作者:  
最近使用C#調(diào)用C++版本的dll遇到很多類型轉(zhuǎn)換的問題,現(xiàn)記錄出容易出錯的部分。
C#對于C++的dll引用時,經(jīng)常會遇到類型轉(zhuǎn)換和struct的轉(zhuǎn)換

1. C++ 里的Char類型是1 個字節(jié),c#里的Char是兩個字節(jié),不可以對應(yīng)使用;可使用c#里的byte對應(yīng)

2. structType temp = (structType)Marshal.PtrToStructure(IntPtr, typeof(structType));說明:此方式轉(zhuǎn)換只針對包含c++基本類型的結(jié)構(gòu)體,如果包含指針數(shù)組的結(jié)構(gòu)體,使用泛型函數(shù)比較方便。

3. [StructLayoutAttribute(LayoutKind.Sequential)] 說明:StructLayoutAttribute 類 使 用戶可以控制類或結(jié)構(gòu)的數(shù)據(jù)字段的物理布局;LayoutKind控制當(dāng)導(dǎo)出到非托管代碼時對象的布局。

4. [MarshalAsAttribute(UnmanagedType.LPWStr)] 指示如何在托管代碼和非托管代碼之間封送數(shù)據(jù);說明:UnmanagedType指定如何將參數(shù)或字段封送到非托管代碼。


托管代碼 (managed code)

  由公共語言運行庫環(huán)境(而不是直接由操作系統(tǒng))執(zhí)行的代碼。托管代碼應(yīng)用程序可以獲得公共語言運行庫服務(wù),例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務(wù)幫助提供獨立于平臺和語言的、統(tǒng)一的托管代碼應(yīng)用程序行為。

  托管代碼是可以使用20多種支持Microsoft .NET Framework的高級語言編寫的代碼,它們包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, 以及C++。所有的語言共享統(tǒng)一的類庫集合,并能被編碼成為中間語言(IL)。運行庫編譯器(runtime-aware compiler)在托管執(zhí)行環(huán)境下編譯中間語言(IL)使之成為本地可執(zhí)行的代碼,并使用數(shù)組邊界和索引檢查,異常處理,垃圾回收等手段確保類型的安全。

  在托管執(zhí)行環(huán)境中使用托管代碼及其編譯,可以避免許多典型的導(dǎo)致安全黑洞和不穩(wěn)定程序的編程錯誤。同樣,許多不可靠的設(shè)計也自動的被增強了安全性,例如 類型安全檢查,內(nèi)存管理和釋放無效對象。程序員可以花更多的精力關(guān)注程序的應(yīng)用邏輯設(shè)計并可以減少代碼的編寫量。這就意味著更短的開發(fā)時間和更健壯的程序。


非托管代碼 (unmanaged code)
  在公共語言運行庫環(huán)境的外部,由操作系統(tǒng)直接執(zhí)行的代碼。非托管代碼必須提供自己的垃圾回收、類型檢查、安全支持等服務(wù);它與托管代碼不同,后者從公共語言運行庫中獲得這些服務(wù)。

相關(guān)文章

  • ASP.NET中ListView(列表視圖)的使用前臺綁定附源碼

    ASP.NET中ListView(列表視圖)的使用前臺綁定附源碼

    ListView(列表視圖)想必大家都知道吧,接下來本文將介紹下ListView的使用前臺綁定,感興趣的你可不要錯過本文了哈
    2013-03-03
  • 詳解.NET主流的幾款重量級?ORM框架

    詳解.NET主流的幾款重量級?ORM框架

    這篇文章主要介紹了.NET主流的幾款重量級?ORM框架,市場上輕量級ORM有很多,比如Dapper、Chloe 本篇文章就介紹一下 功能比較多并且全的ORM,需要的朋友可以參考下
    2022-07-07
  • asp.net內(nèi)置對象 Response對象使用介紹

    asp.net內(nèi)置對象 Response對象使用介紹

    這篇文章主要介紹了asp.net內(nèi)置對象:Response對象使用介紹,對Response對象感興趣的小伙伴們可以參考一下
    2015-11-11
  • .NET學(xué)習(xí)筆記之默認依賴注入

    .NET學(xué)習(xí)筆記之默認依賴注入

    這篇文章主要給大家介紹了關(guān)于.NET學(xué)習(xí)筆記之默認依賴注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • asp.net core2.2多用戶驗證與授權(quán)示例詳解

    asp.net core2.2多用戶驗證與授權(quán)示例詳解

    這篇文章主要給大家介紹了關(guān)于asp.net core2.2多用戶驗證與授權(quán)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • VS2013設(shè)置護眼背景顏色

    VS2013設(shè)置護眼背景顏色

    我們做開發(fā)的一做基本都是一天,對著屏幕眼鏡肯定會累,下面教大家一個VS2013設(shè)置護眼背景色的方法。
    2016-04-04
  • C# Base64編碼

    C# Base64編碼

    Base64編碼的思想是是采用64個基本的ASCII碼字符對數(shù)據(jù)進行重新編碼。它將需要編碼的數(shù)據(jù)拆分成字節(jié)數(shù)組。
    2009-06-06
  • 使用EF Code First搭建簡易ASP.NET MVC網(wǎng)站并允許數(shù)據(jù)庫遷移

    使用EF Code First搭建簡易ASP.NET MVC網(wǎng)站并允許數(shù)據(jù)庫遷移

    這篇文章介紹了使用EF Code First搭建簡易ASP.NET MVC網(wǎng)站并允許數(shù)據(jù)庫遷移的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • ASP.NET WebAPI連接數(shù)據(jù)庫的方法

    ASP.NET WebAPI連接數(shù)據(jù)庫的方法

    這篇文章主要為大家詳細介紹了ASP.NET WebAPI連接數(shù)據(jù)庫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • ASP.NET技巧:教你制做Web實時進度條

    ASP.NET技巧:教你制做Web實時進度條

    ASP.NET技巧:教你制做Web實時進度條...
    2006-09-09

最新評論

修文县| 会泽县| 亳州市| 和平区| 依兰县| 石门县| 神农架林区| 赤城县| 林西县| 黔东| 集安市| 四子王旗| 涡阳县| 冀州市| 渭源县| 英吉沙县| 深泽县| 札达县| 丰都县| 化州市| 桂阳县| 都安| 合水县| 平和县| 贵州省| 长白| 乐平市| 施秉县| 大港区| 福建省| 隆昌县| 乌苏市| 文安县| 龙南县| 治县。| 张家界市| 陇南市| 临泽县| 巩留县| 新源县| 天峻县|