使用C++/CLI 来调用C#的dll
任务分解:
1、实现C#封装一个调用hsl的dll;
2、实现C++控制台调用C#的dll库;
3、把调用C#的dll用C++再封装为一个dll;
4、最后再用Qt调用c++的dll;
填坑:
1、开发时VS需要安装CLI项目库,不然新建项目时找不到;
2、开发时需要安装这几个.net环境;
很可能是因为 C++/CLI 项目的 CLRSupport 属性和 TargetFramework 之间存在不匹配情况。
3、项目属性中设置;“公共语言运行时支持(/clr)”和“符合模式”设置为“否”;
4、错误 C1189 #error: <future> is not supported when compiling with /clr or /clr:pure. (编译源文件 main.cpp)
该报错是Qt中的库和CLR有冲突,所以需要把调用C#的dll另外再封装为一个dll做隔离;
4、result = DllMain(instance, reason, reserved);
运行时在这里崩溃,头文件不要暴露CLI的相关库,用纯虚基类或IMPL;
10、本机正常运行后拷贝到其他电脑后运行崩溃,需要安装.net;
.net8.0
.net5.0
参考:
https://blog.csdn.net/Charles_ke/article/details/133957818