21xrx.com
2025-03-31 20:39:15 Monday
文章检索 我的文章 写文章
使用C++封装DLL, C#调用
2023-07-09 03:02:08 深夜i     17     0
C++ DLL 封装 C# 调用

在软件开发过程中,我们会遇到需要在不同语言中共享代码的情况。其中一种解决方案是将公共代码封装成DLL(动态链接库),因为DLL可以独立于应用程序加载和卸载,不仅能加速代码执行速度,还能实现代码复用。

在此我们将介绍如何使用C++封装DLL,并让C#程序调用它。

1. C++封装DLL

比如我们需要封装一个类,其.h文件的内容如下:

class MyMath
{
public:
  int sum(int x, int y);
};

我们需要将其封装进DLL,步骤如下:

1)在VS中选择新建项目,选择Visual C++ -> Win32 -> Win32 Console Application,并在Application Settings中勾选空项目。然后输入项目名称,创建项目。

2)右键项目->添加->新建项,将所有的.h和.cpp文件添加进来。

3)在.h中的类前面加上__declspec(dllexport),代码如下:

class __declspec(dllexport) MyMath
{
public:
  int sum(int x, int y);
};

4)在Release模式下编译项目,此时生成dll文件。

2. C#调用DLL

我们需要使用InteropServices来实现C#对C++封装的DLL进行调用。步骤如下:

1)在VS中选择新建项目,选择Visual C# -> Windows桌面 -> Windows窗体应用程序,并输入项目名称,创建项目。

2)右键项目->添加引用,然后在COM中找到刚刚生成的DLL文件,添加即可。

3)在代码中调用DLL中的函数,代码如下:

[DllImport("MyMath.dll")]
public static extern int sum(int x, int y);
private void btnCal_Click(object sender, EventArgs e)
{
  int x = int.Parse(txtNumX.Text);
  int y = int.Parse(txtNumY.Text);
  txtResult.Text = sum(x, y).ToString();
}

我们使用DllImport指定要调用的DLL,然后通过C#的函数调用方式实现对C++封装的DLL的调用。

总结

本文介绍了如何使用C++封装DLL,并让C#程序调用它。使用DLL避免了重复编写代码的问题,提高了代码复用率,实现C++与C#之间互操作的需求。

  
  

评论区