托管dll实际上是指c#编写的dll,可以直接右键“引用”导入
而大部分情况下,我们需要引用c++写的dll,如果你的dll是使用 dllimport来导入的,那么它就属于非托管dll,这种dll无法直接嵌入exe中,需要借助工具:costura.fody,该工具可以使用vs直接下载
右键引用,选择“管理nuget程序包”,搜索 “fody”
点击costure.fo无线电工程dy,选择右边详情栏内的“安装”按钮
检查“引用”,发现costura已经加入到项目中
右键 解决方案-“添加”-“新建项”
新建如图所示的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 条评论) |