教程集 www.jiaochengji.com
教程集 >  脚本编程  >  C语言  >  正文 如何在C#中加载自己编写的动态链接库(DLL)

如何在C#中加载自己编写的动态链接库(DLL)

发布时间:2019-01-23   编辑:jiaochengji.com
教程集为您提供如何在C#中加载自己编写的动态链接库(DLL)等资源,欢迎您收藏本站,我们将为您提供最新的如何在C#中加载自己编写的动态链接库(DLL)资源
摘要 本文主要讲述如何在C#中逐步实现加载自己用C 语言编写的动态链接库,以及在导入时如何进行C#和C 语言的数据类型匹配
关键词 C# C 动态链接库 加载 数据类型匹配

一、发生的背景
在开发新项目中使用了新的语言开发C#和新的技术方案WEB Service,但是在新项目中,一些旧的模块需要继续使用,一般是采用C或C 或Delphi编写的,如何利用旧模块对于开发人员来说,有三种可用方法供选择:第一、将C或C 函数用C#彻底改写一遍,这样整个项目代码比较统一,维护也方便一些。但是尽管微软以及某些书籍说,C#和C 如何接近,但是改写起来还是很痛苦的事情,特别是C 里的指针和内存操作;第二、将C或C 函数封装成COM,在C#中调用COM比较方便,只是在封装时需要处理C或C 类型和COM类型之间的转换,也有一些麻烦,另外COM还需要注册,注册次数多了又可能导致混乱;第三、将C或C 函数封装成动态链接库,封装的过程简单,工作量不大。因此我决定采用加载动态链接库的方法实现,于是产生了在C#中如何调用自定义的动态链接库问题,我在网上搜索相关主题,发现一篇调用系统API的文章,但是没有说明如何解决此问题,在MSDN上也没有相关详细说明。基于此,我决定自己从简单出发,逐步试验,看看能否达到自己的目标。
(说明一点:我这里改写为什么很怕麻烦,我改写的代码是变长加密算法函数,代码有600多行,对算法本身不熟悉,算法中指针和内存操作太多,要想保证算法正确,最可行的方法就是少动代码,否则只要有一点点差错,就不能肯定算法与以前兼容)

二、技术实现
下面看看如何逐步实现动态库的加载,类型的匹配:

动态链接库函数导出的定义,这个不需要多说,大家参考下面宏定义即可:
#define LIBEXPORT_API extern "C" __declspec(dllexport)

第一步,我先从简单的调用出发,定义了一个简单的函数,该函数仅仅实现一个整数加法求和:

您可能感兴趣的文章:
如何在C#中加载自己编写的动态链接库(DLL)
如何实现VB和VC的联合调试
python怎么封装dll
Windows下解决php_curl扩展模块无法加载的处理方法
SQLite数据库的使用
Python是一门怎样的编程语言
实 现JAVA 的 动 态 类 载 入 机 制
在Win 98 PWS上安装PHP 4.0
(Unity) 为动态加载的 C# DLL 添加调试支持
用Visual C#调用Windows API函数

[关闭]
~ ~