欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#(.Net)將非托管dll嵌入exe中的實(shí)現(xiàn)

 更新時(shí)間:2021年12月28日 10:29:06   作者:Dear_Xuan  
本文主要介紹了C#(.Net)將非托管dll嵌入exe中的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

托管dll與非托管dll

托管dll實(shí)際上是指C#編寫的dll,可以直接右鍵“引用”導(dǎo)入

而大部分情況下,我們需要引用C++寫的dll,如果你的dll是使用 DllImport來導(dǎo)入的,那么它就屬于非托管dll,這種dll無法直接嵌入exe中,需要借助工具:Costura.Fody,該工具可以使用VS直接下載

下載與安裝

右鍵引用,選擇“管理NuGet程序包”,搜索 "fody"

?點(diǎn)擊Costure.Fody,選擇右邊詳情欄內(nèi)的“安裝”按鈕

檢查“引用”,發(fā)現(xiàn)Costura已經(jīng)加入到項(xiàng)目中

添加Dll

右鍵 解決方案-“添加”-“新建項(xiàng)”

?新建如圖所示的XML文件(如果自動(dòng)生成了就不需要新建): FodyWeavers.xml

此時(shí)這個(gè)XML文件會(huì)被添加到項(xiàng)目根目錄,以我的dll為例

dll名稱為: PicSizer_CUDA.dll

dll位數(shù)為: 64位

修改XML文件

<?xml version="1.0" encoding="utf-8"?>
<Weavers
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
  
  <Costura>
    <Unmanaged64Assemblies>
      PicSizer_CUDA
    </Unmanaged64Assemblies>
  </Costura>
</Weavers>

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

在項(xiàng)目中創(chuàng)建文件夾: Costura64

如果是32位同理改為32

把dll復(fù)制到該文件夾中,在生成時(shí),會(huì)自動(dòng)尋找 Costura64和Costura32文件夾中的dll

將dll設(shè)置為“嵌入的資源”

調(diào)用

直接使用DllImport用平常的方式調(diào)用即可

const string dll_path = "PicSizer_CUDA.dll";
 
[DllImport(dll_path, EntryPoint = "SetBrightness", CallingConvention = CallingConvention.Cdecl)]
public static extern bool SetBrightness(IntPtr ori, int length, byte dark);
 
[DllImport(dll_path, EntryPoint = "IsGPUSupport", CallingConvention = CallingConvention.Cdecl)]
public static extern bool IsGPUSupport();

編譯

重新編譯出exe,將exe復(fù)制到其它路徑,可以正常運(yùn)行

到此這篇關(guān)于C#(.Net)將非托管dll嵌入exe中的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C#將非托管dll嵌入exe 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論