c# vs2019实现调用c++的dll的方法有哪些

  介绍

vs2019实现c#调用c++的dll的方法有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1。托管与非托管的区别

链接地址(仅供参考)
除了链接中的,在实用角度出发:
非托管需要一个个声明引用,就很繁琐
但是托管(虽然麻烦)不用声明,只需要调好配置即可,还是比较方便的
为什么写这个博客,也是因为不同版本vs2017和vs2019有所区别,托管就容易踩坑,希望大家能看看,解决问题(我也很菜,大佬轻喷)

2。非托管类的实现

第一步:创建c++空项目(命名各行各业)添加一个类AddOperate

。h代码部分:

# pragma> # include“AddOperate.h"   # include“iostream"   使用名称空间性病;      int和(int, int b)   {   如果(a - (int) !=0 | | b - b (int) !=0)   {   cout & lt; & lt;“请输入整数“& lt; & lt;endl;   返回1;   }   返回一个+ b;   }

第二步:将c++代码编译成动态库dll

<标记> 标记首先:项目,属性,配置类型——常规——配置类型——动态库文件(. dll)中(注意x64)

 vs2019实现c#调用c++的dll的方法有哪些“> <br/> <标记> </马克> </p> <p>然后:项目,属性,配置属性- C/C +±-高级——编译为——便以c++为代码(/TP) <br/> </p> <p> <img src=

第三步:将dll拷贝到c#项目输入目录,一般在bin/调试下面

第四步:c#调用dll

c#代码如下:<标记> 标记注意:c#也用x64

 # include“AddOperate.h"
  # include“iostream"
  使用名称空间性病;
  
  int和(int, int b)
  {
  如果(a - (int) !=0 | | b - b (int) !=0)
  {
  cout & lt; & lt;“请输入整数“& lt; & lt;endl;
  返回1;
  }
  返回一个+ b;
  }

3。托管类的实现

<标记> 标记注明:windows窗体控制程序也可以这样

第一步:打开vs2019,新建新项目在c#里找到控制台应用(。净核心)

 vs2019实现c#调用c++的dll的方法有哪些“> <br/> </p> <p>尽量把项目放到特定一个文件夹(经验)<br/> </p> <h4>第一步必须这样做</h4> <h4>第二步:在你已经创建好的vs界面中,右击解决方案→添加→新建项目→c++空项目(取名各行各业)</h4> <p> <img src=

新建的项目命名为各行各业

 vs2019实现c#调用c++的dll的方法有哪些

这个时候添加一个类CaculateData

 vs2019实现c#调用c++的dll的方法有哪些“> <br/> </p> <p> CaculateData。h的代码如下</p> <pre class= # include“AddOperate.h"   # include“iostream"   使用名称空间性病;      int和(int, int b)   {   如果(a - (int) !=0 | | b - b (int) !=0)   {   cout & lt; & lt;“请输入整数“& lt; & lt;endl;   返回1;   }   返回一个+ b;   }

CaculateData。cpp代码如下

 # include“AddOperate.h"
  # include“iostream"
  使用名称空间性病;
  
  int和(int, int b)
  {
  如果(a - (int) !=0 | | b - b (int) !=0)
  {
  cout & lt; & lt;“请输入整数“& lt; & lt;endl;
  返回1;
  }
  返回一个+ b;
  }

之后你需要配置你的项目
<标记> 标记1。添加宏CaculateDLL_EXPORTS
方法:在贵司的属性页→配置属性→C/C +±祝辞预处理器→预处理器定义
<标记> 标记(注意,我们需要平台为Win32)

 vs2019实现c#调用c++的dll的方法有哪些“> <br/> <标记> </马克> </p> <p> 2。在各行各业的属性页→配置属性→常规→设置输出目录和配置类型<br/>输出目录:c#文件夹的bin \调试\ netcoreapp3.1(版本更新会有区别)<br/>配置类型:动态库dll <br/> </p> <p> <img src=c# vs2019实现调用c++的dll的方法有哪些