C#調(diào)用C++dll方法步驟
C#調(diào)用C++dll的方法和步驟
其他分享涉及到的概念和方法對(duì)于像我這樣比較菜的選手看起來(lái)比較費(fèi)勁并且很難抓住重點(diǎn),這里我總結(jié)了一段時(shí)間的研究成果供初學(xué)者救濟(jì)之用,簡(jiǎn)單明了。
1、新建項(xiàng)目->Visual C++->Win32項(xiàng)目 MyDLL
注意:C++編寫(xiě)的dll一般是不能直接拿來(lái)C#調(diào)用,需要先新建個(gè)C++的工程把dll里的方法重新封裝成可被C#外部調(diào)用的函數(shù)。
2、MyDLL.cpp里的代碼如下:
extern "C" _declspec(dllexport)int add(int a ,int b) { int sum=a+b; return sum; }
注意:函數(shù)前一定要加extern "C" _declspec(dllexport),可被外部引用
3、項(xiàng)目->屬性->常規(guī)->公共語(yǔ)言運(yùn)行庫(kù)支持->公共語(yǔ)言運(yùn)行庫(kù)支持(/clr)
4、F5編譯程序,在Debug文件夾中找到生成MyDLL.dll目標(biāo)文件備用
1、方法/步驟2
新建項(xiàng)目->Visual C#->控制臺(tái)應(yīng)用程序 dllConsoleApplication1
2、將步驟1生成的MyDLL.dll文件copy到dllConsoleApplication1工程的根目錄下
3、
Program.cs代碼如下using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices; //必須添加,不然DllImport報(bào)錯(cuò)namespace dllConsoleApplication1{ class CPPDLL { [DllImport("MyDLL.dll", CharSet = CharSet.Ansi)] //引入dll,并設(shè)置字符集 public static extern inProgram.cs代碼如下using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices; //必須添加,不然DllImport報(bào)錯(cuò)namespace dllConsoleApplication1{ class CPPDLL { [DllImport("MyDLL.dll", CharSet = CharSet.Ansi)] //引入dll,并設(shè)置字符集 public static extern int add(int a ,int b); } class Program { static void Main(string[] args) { t add(int a ,int b); } class Program { static void Main(string[] args) { int sum=CPPDLL.add(3, 4); } }} int sum=CPPDLL.add(3, 4); } }}
4、
編譯程序,在程序中加斷點(diǎn),查看函數(shù)的計(jì)算結(jié)果
5、到這里,C++dll里的方法已經(jīng)在C#里調(diào)用成功了。到這里,C++dll里的方法已經(jīng)在C#里調(diào)用成功了。
相關(guān)文章
C#實(shí)現(xiàn)簡(jiǎn)單的3DES加密解密功能示例
這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)單的3DES加密解密功能,結(jié)合實(shí)例形式分析了C#實(shí)現(xiàn)3DES加密解密的定義、使用等具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-08-08C#實(shí)現(xiàn)定時(shí)任務(wù)Task Scheduler的示例代碼
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)定時(shí)任務(wù)Task Scheduler的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02C#WinForm實(shí)現(xiàn)多語(yǔ)言切換的示例
本文主要介紹了C#WinForm實(shí)現(xiàn)多語(yǔ)言切換的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01WPF使用DrawingContext實(shí)現(xiàn)二維繪圖
這篇文章介紹了WPF使用DrawingContext實(shí)現(xiàn)二維繪圖的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06C#字符串內(nèi)存分配與駐留池學(xué)習(xí)分享
這篇文章主要介紹了C#字符串內(nèi)存分配與駐留池學(xué)習(xí)分享,大家參考使用吧2013-12-12Unity Shader實(shí)現(xiàn)新手引導(dǎo)遮罩鏤空效果
這篇文章主要為大家詳細(xì)介紹了Unity Shader實(shí)現(xiàn)新手引導(dǎo)遮罩鏤空效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02C#簡(jiǎn)單實(shí)現(xiàn)發(fā)送socket字符串
這篇文章主要為大家詳細(xì)介紹了C#簡(jiǎn)單實(shí)現(xiàn)socket字符串發(fā)送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09