C#加载动态链接库

llovebo

共 1407字,需浏览 3分钟

 ·

2022-02-23 12:30

前言

C#调用C/C++动态链接库的简单案例:用C#实现窗口调用由C/C++编译生成的dll,dll实现两整数求和功能,即函数int Add(int x, int y);

创建DLL

实现步骤:
一:用C/C++编写dll
1、新建VC++应用程序项目,输入名称为MyAdd,在应用程序设置时选择dll应用程序类型,并勾选为空项目类型。

2、新建项目头文件dll.h 如下:

#ifndef DLL_EXPORT

#define DECLDIR __declspec(dllimport)

#else

#define DECLDIR __declspec(dllexport)

#endif

建立项目源文件dllmin.cpp

#include 

#define DLL_EXPORT //先定义宏

#include "dll.h"//这个头文件必须在#define DLL_EXPORT后面

 

extern "C"

{   

DECLDIR int Addint a, int b )   

{   

return( a + b );   

}

}

编译调试,生成MyAdd.dll库函数

调用DLL

用C#语言建立窗口应用程序并调用dll
1、用VS2010建立C#应用窗口程序,添加按钮和文本输出控件,如下图

9352fc6e4fdc7a0af384250f3aa755a3.webp

2、将MyAdd.dll拷贝到新建项目文件下的bin目录中。

3、响应按钮事件,调用MyAdd.dll实现两数相加并在文本框中显示相加后的结果,其实现代码如下:

首先声明调用MyAdd.dll

  [DllImport("MyAdd.dll", SetLastError = true)]

        private static extern int Add(int a, int b);

在按钮相应中添加响应代码:

  int x = 7;

  int y = 9;

  int z = Add(x, y);

  textBox1.Text = Convert.ToString(z);

4、调试程序生成可执行文件,实现结果如图



三:总结

1、注意事项

(a)、将生成的dll文件放入DllImport可以寻找到的地方:


1、.exe文件所在目录 


2、System32目录 


3、环境变量目录。



(b)、在C#窗口调用函数下,首先声明调用Dll文件,如下: 


[DllImport("MyAdd.dll", SetLastError = true)]

private static extern int Add(int a, int b);


声明中应注意:当参数传递时,尤其是传递和返回字符串时,VC++中主要字符串类型为:LPSTR,LPCSTR, LPCTSTR, string, CString, LPCWSTR, LPWSTR等,但转为C#类型却不完全相同。


来源:https://blog.csdn.net/redeagle_gbf/article/details/14001487


版权申明:本文来源于网友收集或网友提供,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。


支持小微:

腾讯云 爆款2核2G云服务器首年40元,企业首购最高获赠300元京东卡

链接:https://curl.qcloud.com/1VVs7OBH


右下角,您点一下在看图片fc76ffcf0bbe080a012c548e6cde3c18.webp

小微工资涨1毛

商务合作QQ:185601686



浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报