首页 > 编程语言 >C#调用托管DLL与非托管DLL

C#调用托管DLL与非托管DLL

时间:2022-08-18 14:55:43浏览次数:65  
标签:调用 C# 创建 托管 DLL 添加

DLL之前使用过几次,但是最近使用时,又出各种问题。最后弄到晚上十二点多了,看到网上一个创建DLL的图解教程,按上面的讲解,成功实现了C#调用自己创建的DLL。之所以耗了这么久时间,是因为我本想凭自己记忆实现DLL创建调用,但是各种问题随即产生。。。(不说了,割了)。。今天上午再次整理,觉得有必要记录。

C#调用DLL,有很多详尽的博客讲解。我此处只记录简单的两种,我在项目中只用到这两种。


一,C#调用托管类型Dll,实际中我是C#调用c#的DLL。其实这个很简单,就是添加引用就可以了。把dll添加到你所写的C#程序引用里。

 

 

 

二,C#调用非托管类代码,实际中我是C#调用C++ DLL..,还是直接上图吧。


1.创建C++ DLL

网上有个图解教程说的很详细,可以照上面做,但是这个教程有个问题。创建DLL时,需要声明导出函数
这里有两种方法声明导出函数:一种是通过使用__declspec(dllexport),添加到需要导出的函数前,进行声明,另外一种就是通过模块定义文件(Module-Definition File即.DEF)来进行声明。后面这个链接中的教程,并未说明这一单,他同时添加了两种做法。我试了,只使用其中一种就可以创建DLL,并且调用成功。http://444492018.blog.163.com/blog/static/11498932420122993358962/

 

 

 

 

 


创建成功后调用DLL.需要把dll相关文件拷贝到你需要调用的程序的bin目录下的debug(release)下。

 

 

 

 

 

 


也可以添加def模块文件,从而申明函数。也是可以的。

 

 

标签:调用,C#,创建,托管,DLL,添加
From: https://www.cnblogs.com/mapstar/p/16598687.html

相关文章

  • java的char类型
    一、Char介绍字符型数据类型。用于存放单个字符。用单引号【''】括住2字节,16位。char在java中是16位,因为java用的是Unicode。一个16位的编码所能产生的字符只有65536个。U......
  • CF576E Painting Edges
    传送门类比一下模板题,其实我们只需要把扩展域并查集再扩展成\(k\)个即可但有个问题,当改变一条边的颜色,导致不能构成二分图时,我们就不能操作;但在线段树上,我们的操作不......
  • Dynamic CRM一对多关系的数据删除时设置自动删除关联的数据
    在业务实体中主子表非常常见,然后子表可能有会有自己的子表或者多对多关系,在删除的业务场景下,删除主数据,剩余的子数据就成了脏数据,之前的做法是,监听主表的删除事件,然后在插......
  • Spring Cloud OpenFeign
    1. 父项目下新建两个子模块,一个provider,一个consumer。先贴上父pom的配置:    2.provider 服务提供方的配置:提供一个普通的controller接口即可,不......
  • java stopwatch 使用
    publicclassProgram{publicstaticvoidmain(String[]args)throwsInterruptedException{varsw=newStopWatch("模板测试");sw.start......
  • vue3将对象转为响应式/ref/reactive/toRefs
    一、ref的作用就是将一个原始数据类型(primitivedatatype)转换成一个带有响应式特性的数据类型,原始数据类型共有7个,分别是:String/Number/BigInt/Boolean/Symbol/Null/Unde......
  • VSCode安装过程记录Win10
    @recommended:languages ......
  • 温故知新,从VSCode安装了解Debian/Ubuntu下安装
    谈安装原文TheeasiestwaytoinstallVisualStudioCodeforDebian/Ubuntubaseddistributionsistodownloadandinstallthe.debpackage(64-bit),eithert......
  • systemctl start network 网卡无法启动
    报错:jobfornetwork.servicefailedbecausethecontrolprocesexitedwitherrorcode.see"sy"stemctlstatusnetwork.service"and"journalctl-xe"fordetailsf......
  • VSCode搭建Rust开发环境
    前言本文以WindowsVSCode+WSL搭建为例。搭建步骤1、安装WSL。2、在WSL中安装c/c++编译环境(Rust依赖gcc):aptinstallbuild-essential运行此命令会自动安装gcc,g+......