方法1:CLR:实现在C++中导入C#封装的Dll文件
DLL文件:C#和C++的区别
DLL文件常描述为动态库文件,用来对重要代码进行封装。在实际项目应用中,需要用来各种各样的库实现不同功能,但是这些库的编程语言并不一致。
C++:封装的是标准Dll(非托管类)
C# :封装的是非标准的DLL(托管类),不可以使用Dllimport调用,Dlllmport是调用标准类(非托管类)。
由于dll文件不同,因此不能直接调用。本文主要介绍利用CLR如何实现在C++中调用C#的dll库文件
1.新建C#的DLL库文件
1.在visostudio中,新建C#类库
2.根据需要设定项目属性配置:框架版本和平台
3.编写被调用的方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ClassLibrary6
{
public class Class1
{
int addtem(int a,int b)
{
return a + b;
}
}
}
4.生成需要的dll文件:ClassLibrary.dll
2.新建C++工程,导入库文件
1.新建C++工程,控制台工程
2.将生成ClassLibrary.dll文件放入工程执行文件中
3.工程配置:
3.1 公共语言支持
3.2 符合模式
4.在工程中编写代码,调用封装库中方法
#include <iostream>
#using "..//Debug//ClassLibrary6.dll"
using namespace ClassLibrary6;
int main()
{
Class1^ DLL = gcnew(Class1);
int result = DLL->addtem(1, 2);
std::cout << result;
}
通过以上配置,就可以实现借助CLR实现C++中加载托管类dll文件。
*但是一些环境比如QT中设置“公共语言支持,导致警告报错,因此可以借助”dllExport和“CLR类库”实现,可参考本人后续文章