关于qt调用c#动态链接库dll,接收多个string类型数据的方法
用qt调用c#动态链接库真的是一件掉头发的事情,c#封装的DLL无法直接在C++语言下的qt中使用。
关于如何调用可以参考前辈的文章
QT(MinGW )方法:https://blog.****.net/u012902367/article/details/105128531
QT(MSVC )方法:https://blog.****.net/weixin_42420155/article/details/81060945
总的方法就是C#写好DLL库后,用C++CLR转换后,用QT调用C++DLL,得到数据的发送和接收。
我之前的文章也列举了调用时遇到的一些问题,感谢互联网,感谢愿意分享的前辈。
好,实现了大佬博客中的int返回,int*返回后,问题来了,如何在一个函数中返回多个string类型的数据?
为了实现多个返回值,我们采用发送指针的方法,相当于用qt把一个杯子发给C++,从C#库中发来一块糖,C++复制这块糖,然后放到qt的杯子里,这样在qt界面我们就可以拿到我们要的糖。
1.在C#中定义函数参数为 ref string change ,可多个
2.C++ CLR中函数参数为 char** cppChange,char** cppChange_t,我们要做的就是将C#返回的String^(S大写)格式转为char*,放到char**这个杯子里
注意marshal头文件 using namespace System::Runtime::InteropServices;
3.在QT中定义char* change=nullptr;char* change_t=nullptr,int a=0,分别用&change和&change_t和&a调用函数
再用QString(change),QString(change_t)实现多个string参数的调用。