使用c#调用c++

项目中,需要c++实现与硬件的通信,显示使用c#进行。查询了相关资料,可以使用托管c++建立c#与c++之间的联系。基本框架如下

使用c#调用c++

托管c++项目的创建请参考

         https://blog.****.net/m0_37251750/article/details/81280016

它介绍了创建托管c++DLL的步骤。只需要看第一种方法即可

同时,在托管c++DLL与原生c++DLL之间,要实现相互引用,参考博文

         https://www.cnblogs.com/marblemm/p/7804056.html    中的DLL的隐式调用部分

注意,文中提到的

#prama comment(lib, "myDll.lib")  这里要根据自己生成的DLL路径进行更改,如

#prama comment(lib, "../myDll.lib") 或者#prama comment(lib, ".../Project/Debug/myDll.lib")

 

为了每次编译不要总是复制dll文件,参考https://www.cnblogs.com/renyuan/p/3970248.html,

比如,我新建了项目结构如下,UI部分是C#程序,硬件部分是c++,HardWareConfig是原生的c++,HardWareConfigCS是托管的c++.

使用c#调用c++

我们可以设置每个c++DLL的输出目录,库目录,附加库目录,都设置为C#项目的Debug文件夹下,具体设置见上面推荐的博文,该博文只用看第一节就好,它下面的小节如“”二、MYDLL工程里面设置“”就不用看。

我这里给出设置c++输出目录的图片.

使用c#调用c++

 

最后,c#添加托管c++HardWareConfigCS.DLL的引用,我们就实现了c# 通过托管c++调用原生的c++了。