使用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