引言
应客户需求,客户端已有MFC的程序,即C++代码,需要调用另一个第三方库Dll的功能,然而此Dll是C#动态链接库,无法直接调用,经过研究需要以下动作。以示例讲解:
配置工程属性
右键MFC工程属性,如图所示:
1、修改配置属性->高级->公共语言运行时支持,选择“公共语言运行时支持(/clr)”;
2、.NET目标框架版本,设置 4.5.2(也可以不选,只是为了方便引用 C# 工程,设置不对的话会报引用工程版本不兼容)。
编写C#类库
创建C#类库工程,编写示例:
namespace MyClassLibrary
{
public class ClassA
{
public int Add(int x, int y)
{
return x + y;
}
public string Say()
{
return "Hello C#";
}
}
}
引用C#类库
1、添加工程引用:
2、配置MFC工程编译选项:
调用C#类库
1、在MFC代码文件头引用C#空间:
using namespace MyClassLibrary;
2、添加一个简单的Button事件:
void CMfcCallCsharpDlg::OnBnClickedButtonCallCsharp()
{
ClassA^ myClass = gcnew ClassA();
CString res = myClass->Say();
MessageBox(res, _T("标题"), MB_OK);
}
3、注意CLR托管类的使用需要带尖号“^”。
结束语
最简洁的MFC调用C#示例,其他情况 C++ 调用 C# 类似,源码包就不用上传了,有需要的直接@,仅供快速参考。
注:开发工具 VS2019