当前位置: 首页 > 编程语言 > C#

exe内嵌非托管dll的C#(.Net)实现分享

时间:2023-04-10 11:52:55 C#

目录ManageddllandunmanageddllDownloadandinstallAddDllcallCompilemanageddllandunmanageddllManageddll实际上是指用C#编写的dll,可以直接右键“引用”导入。大多数情况下,我们需要引用的是用C++dll编写的dll,如果你的dll是使用DllImport导入的,那么它就是一个非托管dll。这种dll不能直接嵌入到exe中。需要用到一个工具:Costura.Fody,可以直接用VS下载安装,选择“ManageNuGetPackages”,搜索“fody”点击Costure.Fody,在右侧详情栏选择“Install”按钮勾选“References”,发现项目中已经添加了Costura来添加dll在解决方案上右击-“添加”-“新建项”新建一个XML文件如图(如果是自动生成的则不需要新建):FodyWeavers.xml此时,此XML文件将添加到项目根目录。以我的dll为例。dll名称为:PicSizer_CUDA.dlldll位数为:64位修改XML文件PicSizer_CUDA注意:不要有后缀,如果是32-bit,把“64”改成“32”就可以了在工程中新建一个文件夹:如果Costura64是32位的,就改成32。将dll复制到这个文件夹中。生成的时候会自动在Costura64和Costura32文件夹下找到dll。将dll设置为“embeddedResources”可以直接使用DllImport以通常的方式调用conststringdll_path="PicSizer_CUDA.dll";[DllImport(dll_path,EntryPoint="SetBrightness",CallingConvention=CallingConvention.Cdecl)]publicstaticexternboolSetBrightness(IntPtrori,intlength,bytedark);[DllImport(dll_path,EntryPoint="IsGPUSupport",CallingConvention=CallingConvention.Cdecl)]publicstaticexternboolIsGPUSupport();编译重新编译exe,将exe复制到其他路径,即可正常运行。这篇关于C#(.Net)嵌入非托管dll到exe中的实现的文章就介绍到这里了。更多C#嵌入非托管dll到exe相关内容请搜索往期文章或继续浏览以下相关文章。希望以后大家多多支持!本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: