動態呼叫DLL時不能載入依賴的程式集

2021-07-09 19:48:29 字數 886 閱讀 9696

假設有2個dll, class1和class2. class1引用class2, 並呼叫class2裡的方法。

namespace

feiyun0112.cnblogs.com}}

namespace

feiyun0112.cnblogs.com}}

如果我們動態呼叫class1裡的方法,會報無法載入"class2"的異常

string

path =@"

c:\test\class1.dll";

assembly assembly 

=assembly.loadfile(path);

type type 

=assembly.gettype(

"feiyun0112.cnblogs.com.class1");

object

obj 

=activator.createinstance(type);

methodinfo method 

=type.getmethod(

"dosomething

", bindingflags.public 

|bindingflags.instance);

if(method 

!=null

)將需要的dll載入到應用程式域,動態呼叫的程式集就可以正常使用了。=+=

newresolveeventhandler(myresolveeventhandler);

static

assembly myresolveeventhandler(

object

sender, resolveeventargs args)

.dll

",strfielname));

}

dll的動態載入

dll的載入方式有兩種 隱式鏈結和動態載入。隱式鏈結,需要包含標頭檔案,引用.lib檔案才能使用匯出函式。動態載入,直接使用loadlibrary載入所需的動態庫,然後指定所需的匯出函式。一般情況下,兩種方式都是可行的。如果我們沒有標頭檔案和.lib檔案,只有dll,使用第二種方法是比較通用的作法。...

dll的動態載入

所謂動態載入就是在程式執行時進行載入,能否呼叫dll中的方法,只有在程式執行的時候才能知道。qt提供qlibrary類提供動態載入。示例 匯出的函式 int dlladd int num,int num 2 動態載入 typedef int addfunction int,int 定義函式指標,引數...

DLL的類庫怎樣實現動態載入呼叫

動態載入動態連線庫能更加有效地使用記憶體,這在大型專案中是非常有用的一項技術。dll中的函式可以很容易的實現動態載入呼叫,網上也有很多相關的介紹,但dll中類庫怎樣實現動態載入呼叫呢?這是我在實際專案中遇到的乙個問題,可以採用類工廠方法,把物件的指標匯出來的方法解決這個問題,如果需要對跨平台的支援還...