在resources.resx資源檔案中新增資源後,編譯後資源可以嵌入在exe檔案中,常見的資源有:,音訊,文字等等。在程式中通過如下**即可呼叫:
properties.resources.*****
星號部分就是新增的資源名稱,點出來就有。
同樣在resources.resx中,嵌入乙個編譯好的dll檔案,如db.dll,通過**properties.resources.db,返回型別是byte,二進位制格式。此時,如果想要呼叫其中的方法,字段,需要對這個二進位制資料做處理了。下面是乙個簡單的方法示例:
動態載入dll
(copy code)
/// ///當然如果不用resources.resx,可以通過新增現有項的方式來新增dll資源,此時,需要修改檔案屬性,【生成操作】改為嵌入的資源,然後通過以下方法來呼叫:動態呼叫資源檔案
///
///
使用到的命名空間
///
使用到的類名
///
呼叫的方法
///
方法的引數陣列(如果沒有則為null)
///
如果呼叫的方法有返回值則返回,如果沒有返回null
public object
invokemethod(
string
namespace,
string
classname,
string
lpprocname,
object
objarray_parameter)
else
system
.windows
.forms
.messagebox
.show(
"方法:"
+lpprocname
+" 不存在!"
); }
else
system
.windows
.forms
.messagebox
.show(
"命名空間:"
+ namespace
+ ",類:"
+ classname
+" 不存在!"
); }
} catch
(exception
e)
return null; }
動態載入dll
(copy code)
private byte1.呼叫的方法當然只能呼叫公有的或者同程式集的,private是無法呼叫的。loaddll(
string
lpfilename)
catch
(exception
e)
return null;}
/// ///
動態呼叫資源檔案
///
///
dll名
///
使用到的命名空間
///
使用到的類名
///
呼叫的方法
///
方法的引數陣列(如果沒有則為null)
///
如果呼叫的方法有返回值則返回,如果沒有返回null
public object
invokemethod(
string
lpfilename,
string
namespace,
string
classname,
string
lpprocname,
object
objarray_parameter)
else
system
.windows
.forms
.messagebox
.show(
"方法:"
+lpprocname
+" 不存在!"
); }
else
system
.windows
.forms
.messagebox
.show(
"命名空間:"
+ namespace
+ ",類:"
+ classname
+" 不存在!"
); }
} catch
(exception
e)
return null; }
2.以上**修改於網路上某些糟糕的文章,已成功編譯通過。
3.這裡麼有做更詳細的解釋,僅貼了些**,這些東西都能一看理解吧,至少知道該如何使用它。
5.麼有了…
C 載入嵌入到資源的非託管dll
我們總會遇到需要載入非win32的非託管dll,這裡推薦一種方式就是將那些非win32的非託管dll嵌入資源的方式,在入口解壓並且載入的方式,我先來看看如何實現吧,首先我們準備好demo,新增控制台專案如下 如下 static void main string args 解壓資源並且載入非託管dll...
C 動態載入DLL
using system.reflection 利用反射進行動態載入和呼叫.assembly ass assembly.loadfrom dllpath 利用dll的路徑載入 載入dll後,需要使用dll中某類.type type ass.gettype typename 利用型別的命名空間和名稱獲...
C 動態載入DLL
利用反射進行動態載入和呼叫.assembly ass assembly.loadfrom dllpath 利用dll的路徑載入 載入dll後,需要使用dll中某類.type type ass.gettype typename 利用型別的命名空間和名稱獲得型別 需要例項化型別,才可以使用,引數可以人為...