C++(QT)通过CLR调用C#编写的dll

        上篇文章提到希望通过新代官网提供的dll,实现CNC系统内部参数的读取写。由于项目所使用的开发语言是C++,曾与新代方沟通提供C++环境下的dll文件,被告知只有C#环境下的dll文件。虽然项目道路崎岖,不能刚开始就要放弃。网上查了相关资料,了解到C++通过CLR可以调用C#编写的dll。

        在做之前可以先参考Qt程序中调用C#编写的dll博文,这篇博文细致介绍了QT项目调用C#编写的dll内的函数原理和调用步骤,真心给这篇博文点赞。在复现博文里面的功能函数的时候,顺手做了以下步骤,在此借花献佛,方便理清思路:

C++(QT)通过CLR调用C#编写的dll_第1张图片

         博文虽写的很详细,美中不足的是所提供dll的函数接口使用的参数为int和string类型,而新代CNC提供的dll的函数接口为不同类型的数组,以及out型数据。查询了一些资料基本上都是int型或者string型数据作为输入形参的相互调用。下表中列举了新代CNC系统dll不同函数接口,并在接下来的几篇文章中逐一进行讲解:

数据类型 ref/out 函数接口
const char*  ref api_isConnected(const char* )
char* out READ_status(System::String^ )
int[] out READ_param_data((array^ )
string[] out READ_alm_history(array^ )
string[][] out READ_nc_mem_list(array^>^ )

        接下来将介绍在c++通过CLR调用C#的dll,函数接口为char* 类型,形参分别作为写入(ref)和传出(out)。

你可能感兴趣的:(SynecCNC,c#,c++)