使用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++DLL的输出目录,库目录,附加库目录,都设置为C#项目的Debug文件夹下,具体设置见上面推荐的博文,该博文只用看第一节就好,它下面的小节如“”二、MYDLL工程里面设置“”就不用看。
我这里给出设置c++输出目录的图片.
最后,c#添加托管c++HardWareConfigCS.DLL的引用,我们就实现了c# 通过托管c++调用原生的c++了。