C#实现修改动态链接库

开发 后端
这里介绍C#实现修改动态链接库,动态链接库放在 C# 程序的目录下即可,我这里是一个 C# 的动态链接库,两个动态链接库就在同一个目录下运行。

C#语言还是比较常见的东西,这里我们主要介绍C#实现修改动态链接库,包括介绍在 C# 中调用 C++ 编写的动态链接库函数等方面。

C#实现修改动态链接库,将b修改为双重指针:

  1. public class RefComm  
  2. {  
  3. [DllImport("LibEncrypt.dll",  
  4. EntryPoint=" mySum ",  
  5. CharSetCharSet=CharSet.Ansi,
    CallingConventionCallingConvention=CallingConvention.StdCall)]  
  6. public static extern string mySum (string a, ref string b);  
  7. }  

在C#中调用测试:

  1. string strDest="";  
  2. string strTmpRefComm. mySum("12345", ref strDest);  

运行查看结果 strTmp 和 strDest 均为"12345",调用正确。实现了函数出口参数正确输出结果。

C#实现修改动态链接库,实现整数参数的输出:

  1. public class RefComm  
  2. {  
  3. [DllImport("LibEncrypt.dll",  
  4. EntryPoint=" mySum ",  
  5. CharSetCharSet=CharSet.Ansi,
    CallingConventionCallingConvention=CallingConvention.StdCall)]  
  6. public static extern int mySum (int a, int b,ref int c);  

经过以上的试验,基本掌握了如何定义动态库函数以及如何在 C# 定义导入,有此基础,很快我实现了变长加密函数在 C# 中的调用,至此目标实现。

在 C# 中调用 C++ 编写的动态链接库函数,如果需要出口参数输出,则需要使用指针,对于字符串,则需要使用双重指针,对于 C# 的导入定义,则需要使用引用(ref)定义。

对于函数返回值,C# 导入定义和 C++ 动态库函数声明定义需要保持一致,否则会出现函数调用失败。定义导入时,一定注意 CharSet 和 CallingConvention 参数,否则导致调用失败或结果异常。运行时,动态链接库放在 C# 程序的目录下即可,我这里是一个 C# 的动态链接库,两个动态链接库就在同一个目录下运行。

【编辑推荐】

  1. C#字符ASCII码学习经验
  2. C#数值类型之间的转换概述
  3. 日期型数据转换成C#长整型数据
  4. C#查看Excel对象模型分析
  5. C#日期型数据简单剖析
责任编辑:佚名 来源: csdn
相关推荐

2009-08-05 16:29:18

C#调用C++动态链接

2024-03-01 20:59:11

C#DLL开发

2011-05-18 17:15:45

2021-09-01 05:11:13

C# 动态链接库

2011-06-21 18:02:14

Qt 动态 链接库

2012-05-04 08:24:14

LinuxUnix

2012-05-08 14:48:23

LinuxUnix动态链接库

2022-06-09 09:54:45

编译软件开发

2009-08-28 16:14:26

C#实现加载动态库

2022-05-03 23:44:21

Python动态链接库Ctypes

2009-07-07 20:57:20

LinuxUnix动态链接库

2010-02-01 17:37:35

C++调用C链接库

2023-05-09 08:24:11

JNA链接库代码

2012-01-06 10:25:50

JavaDLLC++

2009-10-29 16:36:49

VB.NET .DLL

2023-11-29 08:31:20

PythonRust

2022-10-24 00:03:21

动态链接库DLL

2022-08-09 07:57:25

Linux操作系统Windows

2010-06-09 10:20:56

链接MySQL数据库

2022-07-12 13:23:59

静态链接库可执行文件C 目标文件
点赞
收藏

51CTO技术栈公众号