最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

托管dll與非托管dll

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

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

下載與安裝

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

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

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

添加Dll

右鍵 解決方案-“添加”-“新建項”

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

此時這個XML文件會被添加到項目根目錄,以我的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”

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

如果是32位同理改為32

把dll復(fù)制到該文件夾中,在生成時,會自動尋找 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ù)制到其它路徑,可以正常運行

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

相關(guān)文章

最新評論

青岛市| 洪洞县| 会泽县| 金堂县| 汕尾市| 岐山县| 呼伦贝尔市| 申扎县| 青浦区| 辽阳县| 萨迦县| 大厂| 洪洞县| 大化| 和田县| 大英县| 政和县| 民和| 策勒县| 肇庆市| 砀山县| 泽库县| 永仁县| 吕梁市| 蕉岭县| 榆树市| 福泉市| 阿尔山市| 炉霍县| 屏边| 甘南县| 黄梅县| 临泽县| 泸州市| 逊克县| 治县。| 蒲江县| 云南省| 香港 | 东乌珠穆沁旗| 高台县|