首页 > 作文

C#(.Net)将非托管dll嵌入exe中的实现

更新时间:2023-04-04 07:50:18 阅读: 评论:0

托管dll与非托管dll

托管dll实际上是指c#编写的dll,可以直接右键“引用”导入

而大部分情况下,我们需要引用c++写的dll,如果你的dll是使用 dllimport来导入的,那么它就属于非托管dll,这种dll无法直接嵌入exe中,需要借助工具:costura.fody,该工具可以使用vs直接下载

下载与安装

右键引用,选择“管理nuget程序包”,搜索 “fody”

点击costure.fo无线电工程dy,选择右边详情栏内的“安装”按钮

检查“引用”,发现costura已经加入到项目中

添加dll

右键 解决方案-“添加”-“新建项”

新建如图所示的xml文件(如果自动生成了就不需要新建): fodyweavers.xml

此时这个xml文件会被添加到项目根目录,以我的dll为例

dll名称为: picsizer_cuda.dll

dll位数为: 64位

修改xml文件

<?xml version="1.0" encoding="utf-8"?><weavers  xmlns:xsi="专业人才培养方案/d/file/titlepic/xmlschema-instance"  xsi:nonamespaceschemalocation="fodyweavers.xsd">    <costura>    <unmanaged64asmbdeer复数形式lies>      picsizer_cuda    </unmanaged64asmblies>  </costura></weavers>

注意:不要有后缀名,如果是32位只需要把“64”改成“32”

在项目中创建文件夹: costura64

如果是32位同理改为32

把dll复制到该文件夹中,在生成时,会自动寻找 costura64和costura32文件夹中的dll大嶝岛旅游攻略

将dll设置为“嵌入的资源”

调用

直接使用dllimport用平常的方式调用即可

const string dll_path = "picsizer_cuda.dll"; [dllimport(dll_path, entrypoint = "tbrightness", c爱过方知情重allingconvention = callingconvention.cdecl)]public static extern bool tbrightness(intptr ori, int length, byte dark); [dllimport(dll_path, entrypoint = "isgpusupport", callingconvention = callingconvention.cdecl)]public static extern bool isgpusupport();

编译

重新编译出exe,将exe复制到其它路径,可以正常运行

到此这篇关于c#(.net)将非托管dll嵌入exe中的实现的文章就介绍到这了,更多相关c#将非托管dll嵌入exe 内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 07:50:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/540fa045aecaa23e40b0b7ec958198d6.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C#(.Net)将非托管dll嵌入exe中的实现.doc

本文 PDF 下载地址:C#(.Net)将非托管dll嵌入exe中的实现.pdf

标签:右键   文件   项目   工具
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图