欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 調(diào)用C++寫(xiě)的dll的實(shí)現(xiàn)方法

 更新時(shí)間:2013年10月09日 15:11:17   作者:  
C#調(diào)用C++的非托管類(lèi)的dll其實(shí)很簡(jiǎn)單基本就是固定的調(diào)用格式,有需要的朋友可以參考一下

  dll的編寫(xiě),首先是打開(kāi)VS新建一個(gè)C++的控制臺(tái)程序,下一步后選擇dll以及空文檔即可。然后就是添加一個(gè)類(lèi)添加一個(gè)方法。方法排頭固定格式 extern"C"__declspec(dllexport) 后面加方法即可。 例如如下代碼:

C++dll代碼:

復(fù)制代碼 代碼如下:

extern"C"__declspec(dllexport) char* ShowImages(BYTE img[],int w,int h){;}

  C#調(diào)用dll基本也是固定格式,如下樣式,這邊有添加unsafe這是因?yàn)橛杏玫街羔樀木壒蔥沒(méi)用指針不需要unsafe],C#用指針必須添加

unsafe,并且在項(xiàng)目屬性里面的生成允許不安全代碼打鉤才行.

  還有一點(diǎn)是C#調(diào)用DLL需要添加命名空間

復(fù)制代碼 代碼如下:

using System.Runtime.InteropServices;

  代碼樣式如下:

C#調(diào)用代碼:

復(fù)制代碼 代碼如下:

[DllImport("dll名字.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
unsafe public static extern byte* ShowImages(byte[] src, int w, int h);

  按照如上編寫(xiě)dll以及調(diào)用失敗原因多數(shù)可能就是C++的C#的數(shù)據(jù)類(lèi)型沒(méi)有對(duì)應(yīng)的原因。

  最后還有一點(diǎn)要提的是,具有指針?lè)祷刂档姆椒?,該指針變量在C++中必須是全局的,方法體里的私有的會(huì)出錯(cuò)。原因是出了方法體就被釋放了,雖然是return出來(lái)的,也沒(méi)有效果。
  這個(gè)問(wèn)題我之前就遇到過(guò), C++里面return出來(lái)一個(gè)指針地址,然后C#里面調(diào)用,出來(lái)的數(shù)據(jù)亂七八糟,當(dāng)時(shí)一直很郁悶,后來(lái)終于發(fā)現(xiàn)原因就是指針return出來(lái)還是會(huì)被釋放掉,所以獲得的數(shù)據(jù)亂七八糟。解決方法當(dāng)然是把指針變量設(shè)成全局變量。

相關(guān)文章

  • 基于C#實(shí)現(xiàn)的仿windows左側(cè)伸縮菜單效果

    基于C#實(shí)現(xiàn)的仿windows左側(cè)伸縮菜單效果

    這篇文章主要介紹了基于C#實(shí)現(xiàn)的仿windows左側(cè)伸縮菜單效果,比較實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • Unity?UGUI的Dropdown下拉菜單組件使用詳解

    Unity?UGUI的Dropdown下拉菜單組件使用詳解

    這篇文章主要為大家介紹了Unity?UGUI的Dropdown下拉菜單組件使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • C#開(kāi)源的AOP框架--KingAOP基礎(chǔ)

    C#開(kāi)源的AOP框架--KingAOP基礎(chǔ)

    這篇文章主要介紹了一款C#開(kāi)源的AOP框架--KingAOP框架的基礎(chǔ)知識(shí),對(duì)于想學(xué)習(xí)AOP的小伙伴來(lái)說(shuō),非常不錯(cuò),希望大家能夠喜歡。
    2015-12-12
  • C#中實(shí)現(xiàn)插入、刪除Excel分頁(yè)符的方法

    C#中實(shí)現(xiàn)插入、刪除Excel分頁(yè)符的方法

    這篇文章主要給大家介紹了關(guān)于在C#中實(shí)現(xiàn)插入、刪除Excel分頁(yè)符的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • C#二維數(shù)組基本用法實(shí)例

    C#二維數(shù)組基本用法實(shí)例

    這篇文章主要介紹了C#二維數(shù)組基本用法,以實(shí)例形式分析了C#中二維數(shù)組的定義、初始化、遍歷及打印等用法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • datatable生成excel和excel插入圖片示例詳解

    datatable生成excel和excel插入圖片示例詳解

    excel導(dǎo)出在C#代碼中應(yīng)用己經(jīng)很廣泛了,下面講了datatable生成excel、復(fù)制sheet頁(yè)、刪除sheet頁(yè)、選中sheet頁(yè)、另存excel文件、excel中插入圖片等功能
    2014-01-01
  • 講解C#設(shè)計(jì)模式編程中享元模式的運(yùn)用

    講解C#設(shè)計(jì)模式編程中享元模式的運(yùn)用

    這篇文章主要介紹了C#設(shè)計(jì)模式編程中享元模式的運(yùn)用,享元模式主張限制對(duì)象的數(shù)量來(lái)優(yōu)化內(nèi)存使用,需要的朋友可以參考下
    2016-02-02
  • C#編程總結(jié)(六)詳解異步編程

    C#編程總結(jié)(六)詳解異步編程

    本篇文章主要介紹了C#異步編程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。
    2016-12-12
  • c# mutex互斥量的深入解析

    c# mutex互斥量的深入解析

    本篇文章主要是對(duì)c#中的mutex互斥量進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • c++指針使用形參改變實(shí)參的方法

    c++指針使用形參改變實(shí)參的方法

    下面小編就為大家?guī)?lái)一篇c++指針使用形參改變實(shí)參的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03

最新評(píng)論