国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C#調(diào)用C++ DLL 文件

2019-11-17 02:48:16
字體:
供稿:網(wǎng)友

C#調(diào)用C++ DLL 文件

  說來慚愧,都注冊一年多了,卻沒有發(fā)表過一篇正式的博文,中間很多學(xué)習(xí)的過程也沒有記錄下來。如今到了一個新的環(huán)境,也有了學(xué)習(xí)的機(jī)會,一定要把每天的收獲記錄一下。

  要做的東西需要引用C++編寫的DLL,剛開始從網(wǎng)上看到覺得挺麻煩的就沒有仔細(xì)研究,如今看到別人寫的文章,感覺也不是多難。下面分享一下:

1、整一個DLL

  使用C++創(chuàng)建一個動態(tài)庫項目,應(yīng)用程序設(shè)置中選擇“DLL”

  打開CPPDemo.cpp文件,添加如下代碼

  

#include "stdafx.h"extern "C" __declspec(dllexport) int Add(int x, int y) { return x + y; }extern "C" __declspec(dllexport) int Sub(int x, int y) { return x - y; }extern "C" __declspec(dllexport) int Multiply(int x, int y) { return x * y; }extern "C" __declspec(dllexport) int Divide(int x, int y) { return x / y; }

  

  在這里面:extern "C" 包含雙重含義,從字面上即可得到:首先,被它修飾的目標(biāo)是“extern”的(extern可以置于變量或者函數(shù)前,以表示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時在其他模塊中尋找其定義。);其次,被它修飾的目標(biāo)是“C”的。而被extern "C"修飾的變量和函數(shù)是按照C語言方式編譯和連接的。

__declspec(dllexport)的目的是為了將對應(yīng)的函數(shù)放入到DLL動態(tài)庫中。

extern "C" __declspec(dllexport)加起來的目的是為了使用DllImport調(diào)用非托管C++的DLL文件。因為使用DllImport只能調(diào)用由C語言函數(shù)做成的DLL。

  編譯項目,得到CPPDemo.dll

2、使用C#調(diào)用這個DLL

  創(chuàng)建一個C#項目,新建一個CPPDLL類,在類中添加如下代碼,就是把要用到的方法重新聲明了一下,具體實現(xiàn)代碼不用寫了。

 public class CPPDLL    {        [DllImport("CSharpInvokeCPP.CPPDemo.dll")]        public static extern int Add(int x, int y);        [DllImport("CSharpInvokeCPP.CPPDemo.dll")]        public static extern int Sub(int x, int y);        [DllImport("CSharpInvokeCPP.CPPDemo.dll")]        public static extern int Multiply(int x, int y);        [DllImport("CSharpInvokeCPP.CPPDemo.dll")]        public static extern int Divide(int x, int y);           }

  注意1記得要使用DllImport,要引用“System.Runtime.InteropServices”,2、把CPPDemo中生成的DLL文件拷貝到CSharpDemo的bin目錄下

  這樣在項目中就可以使用DLL的方法了。

int result = CPPDLL.Add(10, 20);

  這只是通過靜態(tài)方法調(diào)用C++里面的函數(shù),對我來說也足夠了。暫時就寫這些,堅持就是勝利。里面的代碼參考了其他人的成果,沒有找到作者也不方便說。只想說網(wǎng)絡(luò)上大家都分享才能進(jìn)步,如果我寫的能幫到你我很高興。如果你有好的意見,歡迎反饋。

  

  


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 米脂县| 广西| 葵青区| 山东| 河北区| 牡丹江市| 宜章县| 巨野县| 南昌市| 江永县| 应城市| 简阳市| 齐齐哈尔市| 延川县| 延安市| 合山市| 五寨县| 昌吉市| 乐至县| 平安县| 扎赉特旗| 上思县| 芜湖县| 黄平县| 汝南县| 霍林郭勒市| 尚义县| 中方县| 双流县| 海城市| 雷州市| 古田县| 墨竹工卡县| 阿瓦提县| 张北县| 鄂伦春自治旗| 濮阳市| 洞头县| 辛集市| 富锦市| 翼城县|