21xrx.com
2024-11-05 16:32:33 Tuesday
登录
文章检索 我的文章 写文章
使用C++封装DLL, C#调用
2023-07-09 03:02:08 深夜i     --     --
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#之间互操作的需求。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复