C#調(diào)用C++dll方法步驟
C#調(diào)用C++dll的方法和步驟
其他分享涉及到的概念和方法對(duì)于像我這樣比較菜的選手看起來比較費(fèi)勁并且很難抓住重點(diǎn),這里我總結(jié)了一段時(shí)間的研究成果供初學(xué)者救濟(jì)之用,簡(jiǎn)單明了。
1、新建項(xiàng)目->Visual C++->Win32項(xiàng)目 MyDLL
注意:C++編寫的dll一般是不能直接拿來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ùn)行庫支持->公共語言運(yùn)行庫支持(/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)用成功了。
- C# 調(diào)用C++寫的dll的實(shí)現(xiàn)方法
- C++調(diào)用C#的DLL實(shí)現(xiàn)方法
- C++與C#互調(diào)dll的實(shí)現(xiàn)步驟
- C#調(diào)用C++DLL傳遞結(jié)構(gòu)體數(shù)組的終極解決方案
- C++調(diào)用C#的DLL程序?qū)崿F(xiàn)方法
- c#調(diào)用c++的DLL的實(shí)現(xiàn)方法
- 基于C#調(diào)用c++Dll結(jié)構(gòu)體數(shù)組指針的問題詳解
- C#程序調(diào)用C++動(dòng)態(tài)庫(dll文件)遇到的坑及解決
- C#程序如何調(diào)用C++?dll詳細(xì)教程
- C++項(xiàng)目中調(diào)用C#DLL的三種方式
相關(guān)文章
基于Kubernetes實(shí)現(xiàn)前后端應(yīng)用的金絲雀發(fā)布(兩種方案)
這篇文章主要介紹了基于Kubernetes實(shí)現(xiàn)前后端應(yīng)用的金絲雀發(fā)布,文中給大家提到了兩種常用方案,通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12C#?WPF實(shí)現(xiàn)播放音頻文件的示例詳解
這篇文章主要為大家詳細(xì)介紹了利用C#?WPF實(shí)現(xiàn)播放音頻文件的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03C#啟動(dòng)windows服務(wù)方法的相關(guān)問題分析
C#啟動(dòng)windows服務(wù)的方法都是什么呢?C#啟動(dòng)服務(wù)類型為Disabled的windows服務(wù)會(huì)遇到什么樣的問題呢?那么本文就向你介紹C#啟動(dòng)windows服務(wù)的方法的相關(guān)內(nèi)容2012-12-12C#基于Twain協(xié)議調(diào)用掃描儀,設(shè)置多圖像輸出模式(Multi image output)
這篇文章主要介紹了C#基于Twain協(xié)議調(diào)用掃描儀,設(shè)置多圖像輸出模式(Multi image output)的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2021-01-01c#文件的復(fù)制,移動(dòng),創(chuàng)建(實(shí)例代碼)
c#文件的復(fù)制,移動(dòng),創(chuàng)建(實(shí)例代碼),需要的朋友可以參考一下2013-04-04