引言

应客户需求,客户端已有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

更多推荐