返回顶部
首页 > 资讯 > 精选 >C#中怎么加载动态库
  • 184
分享到

C#中怎么加载动态库

2023-06-17 23:06:26 184人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关C#中怎么加载动态库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#语言有很多值得学习的地方,这里我们主要介绍C#实现加载动态库,包括介绍将 C 或 c++ 函数封装成

这期内容当中小编将会给大家带来有关C#中怎么加载动态库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

C#语言有很多值得学习的地方,这里我们主要介绍C#实现加载动态库,包括介绍将 C 或 c++ 函数封装成 COM等方面。

开发项目中使用了新的语言开发 C# 和新的技术方案 WEB Service,但是在新项目中,一些旧的模块需要继续使用,一般是采用 C 或 C++ 或 Delphi 编写的,如何利用旧模块对于开发人员来说,有三种可用方法供选择:

***、将 C 或 C++ 函数用 C# 彻底改写一遍,这样整个项目代码比较统一,维护也方便一些。但是尽管微软以及某些书籍说,C# 和 C++ 如何接近,但是改写起来还是很痛苦的事情,特别是 C++ 里的指针和内存操作;

第二、将 C 或 C++ 函数封装成 COM,在 C# 中调用COM 比较方便,只是在封装时需要处理 C 或 C++ 类型和 COM 类型之间的转换,也有一些麻烦,另外COM 还需要注册,注册次数多了又可能导致混乱;

第三、将 C 或 C++ 函数封装成动态链接库,封装的过程简单,工作量不大。因此我决定采用C#实现加载动态库的方法实现,于是产生了在 C# 中如何调用自定义的动态链接库问题,我在网上搜索相关主题,发现一篇调用系统 api 的文章,但是没有说明如何解决此问题,在 MSDN 上也没有相关详细说明。基于此,我决定自己从简单出发,逐步试验,看看能否达到自己的目标。

(说明一点:我这里改写为什么很怕麻烦,我改写的代码是变长加密算法函数,代码有600多行,对算法本身不熟悉,算法中指针和内存操作太多,要想保证算法正确,最可行的方法就是少动代码,否则只要有一点点差错,就不能肯定算法与以前兼容)

C#技术实现

下面看看如何逐步C#实现加载动态库,类型的匹配,动态链接库函数导出的定义,这个不需要多说,大家参考下面宏定义即可:

#define LIBEXPORT_API extern "C" __declspec(dllexport)

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

  1. public class RefComm  

  2. {  

  3. [DllImport("LibEncrypt.dll",  

  4. EntryPoint=" mySum ",  

  5. CharSetCharSet=CharSet.Auto,
    CallinGConventionCallingConvention=CallingConvention.StdCall)]  

  6. public static extern int mySum (int a,int b);  

运行查看结果iSum为5,调用正确。***步试验完成,说明在C#中能够调用自定义的动态链接库函数。

第二步,我定义了字符串操作的函数(简单起见,还是采用前面的函数名),返回结果为字符串:

public class RefComm  {  [DllImport("LibEncrypt.dll",  EntryPoint=" mySum ",  CharSetCharSet=CharSet.Auto,  CallingConventionCallingConvention=CallingConvention.StdCall)]  public static extern string mySum (string a, string b);  }

上述就是小编为大家分享的C#中怎么加载动态库了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: C#中怎么加载动态库

本文链接: https://lsjlt.com/news/294060.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中怎么加载动态库
    这期内容当中小编将会给大家带来有关C#中怎么加载动态库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#语言有很多值得学习的地方,这里我们主要介绍C#实现加载动态库,包括介绍将 C 或 C++ 函数封装成...
    99+
    2023-06-17
  • Ajax中怎么动态加载数据库
    这期内容当中小编将会给大家带来有关Ajax中怎么动态加载数据库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码如下:<!DOCTYPE html PUBLIC &...
    99+
    2024-04-02
  • C++使用宏实现动态库加载
    目录前言一、为什么使用宏1、Windows加载2、Linux加载3、宏加载二、具体实现三、如何使用1、引用头文件2、添加导入宏3、直接调用总结前言 开发的时候,有些项目不能静态链接动...
    99+
    2022-12-16
    C++ 宏 动态库加载 C++动态库加载 C++动态库 C++ 宏 动态库
  • React中怎么动态加载路由
    React中怎么动态加载路由,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。引入必要的依赖import React&n...
    99+
    2024-04-02
  • linux生成(加载)动态库静态库和加载示例方法
    动态库的生成: 1、 #include <stdio.h>#include "src.h" int sum(int a,int b){return (a+b);} 2、 #ifndef ...
    99+
    2022-06-04
    加载 示例 静态
  • Delphi中怎么动态加载TreeView信息
    在Delphi中,可以使用TTreeNode的AddChild方法来动态加载TreeView信息。以下是一个简单的示例代码: pro...
    99+
    2023-10-21
    Delphi
  • Android基础——动态加载so库
    Android中动态加载so 原因:如果把so文件直接放在libs目录下,在android程序启动的时候会默认加载libs目录下的所有so库,但这些so库可能会在某些地方存在冲突,使用动态加载so库,就可以通过一些条件判断是否要加载这个so...
    99+
    2023-08-17
    android java android studio
  • VUE中怎么实现路由动态加载
    VUE中怎么实现路由动态加载,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先新建vue工程,一般我们不会特殊处理路由,但当项目页面越来越多,...
    99+
    2024-04-02
  • layer中动态加载select失效怎么办
    小编给大家分享一下layer中动态加载select失效怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!问题:现在select...
    99+
    2024-04-02
  • 怎么在Android中动态加载二维码
    这篇文章将为大家详细讲解有关怎么在Android中动态加载二维码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.需求背景需要实现一个动态加载但不显示出来的视图,且该视图上有个动态生成的二维...
    99+
    2023-05-30
    android
  • ajax怎么动态加载json数据
    这篇文章将为大家详细讲解有关ajax怎么动态加载json数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。jsp代码<form >   姓...
    99+
    2023-06-08
  • springboot动态加载类怎么实现
    要实现Spring Boot动态加载类,可以使用以下步骤: 创建一个ClassLoader对象,用于动态加载类。可以使用URLC...
    99+
    2023-10-25
    springboot
  • Golang使用CGO与Plugin技术运行加载C动态库
    目录文章简介技术背景解决方案1解决方案2文章简介 本文介绍一种 Golang 程序在运行时加载 C 动态库的技术,跳过了 Golang 项目编译阶段需要链接 C 动态库的过程,提高了...
    99+
    2024-04-02
  • VueJs中怎么实现异步动态加载块
    本篇文章给大家分享的是有关VueJs中怎么实现异步动态加载块,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先定义组件为异步加载define(...
    99+
    2024-04-02
  • C#中怎么修改动态链接库
    这期内容当中小编将会给大家带来有关C#中怎么修改动态链接库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#实现修改动态链接库,将b修改为双重指针:public class RefCo...
    99+
    2023-06-17
  • 怎么在CentOS中添加动态链接库
    今天就跟大家聊聊有关怎么在CentOS中添加动态链接库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。第一:在/etc/profile中添加共享库的路径:[plain] vi...
    99+
    2023-06-10
  • Angular.js怎么实现动态加载组件
    小编给大家分享一下Angular.js怎么实现动态加载组件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言有时候需要根据URL...
    99+
    2024-04-02
  • unity怎么调用c++动态库
    要在Unity中调用C++动态库,可以按照以下步骤进行操作:1. 创建C++动态库:首先,使用C++编写你的库,并将其编译为动态库(...
    99+
    2023-09-20
    unity c++
  • java怎么调用c++动态库
    要在Java中调用C++动态库,可以使用JNI(Java Native Interface)技术。以下是通过JNI调用C++动态库的...
    99+
    2023-10-20
    java c++
  • 怎么在Android中利用Listview动态加载数据
    怎么在Android中利用Listview动态加载数据?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java代码:package org.developerwor...
    99+
    2023-05-30
    android listview
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作