C#(.Net)將非托管dll嵌入exe中的實(shí)現(xiàn)
托管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)文章
C#開發(fā)Windows UWP系列之對(duì)話框MessageDialog和ContentDialog
這篇文章介紹了C#開發(fā)Windows UWP系列之對(duì)話框MessageDialog和ContentDialog,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06winform實(shí)現(xiàn)限制及解除鼠標(biāo)移動(dòng)范圍的方法
這篇文章主要介紹了winform實(shí)現(xiàn)限制及解除鼠標(biāo)移動(dòng)范圍的方法,涉及C#控制WinForm鼠標(biāo)事件屬性的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09c# 實(shí)現(xiàn)康威生命游戲(細(xì)胞自動(dòng)機(jī))的示例
這篇文章主要介紹了c# 實(shí)現(xiàn)康威生命游戲(細(xì)胞自動(dòng)機(jī))的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-02-02winform 實(shí)現(xiàn)選擇文件和選擇文件夾對(duì)話框的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄獁inform 實(shí)現(xiàn)選擇文件和選擇文件夾對(duì)話框的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01