在C 中動態載入類(在程式中呼叫DLL檔案)

2021-03-31 11:11:58 字數 1177 閱讀 4196

本人剛剛開始編寫程式不久,開發中發現一非常好的方法。大家共享。

我們在編寫程式的時候經常會遇到這樣的情況:程式中要用到某種計算,而且這種計算的計算方式很多,我們不得不在編寫程式時就要考慮的十分全面,將各種情況到考慮到。但是這樣做又非常的費力,因為我們無法**到程式編好後,還會出現什麼樣的計算方式。如果計算方式是在交付給客戶後,客戶新提出的我們就不得不將新的計算方式寫人程式中,然後重新編譯,再交給客戶。這樣做是相當麻煩的,而且只為了這麼一小段程式,就要重新編譯整個工程,似乎代價也挺大的。

使用ms.***中system.reflection中的一些方法,可以幫助我們很好的解決上面的問題。

首先,在遇到上面提出的問題的時候,我們先要進行一下分析,這種計算需要一些什麼引數?在不同的計算方式中,它們共同的引數是什麼?不同的計算方式中特有的引數是否可以通過共有的引數計算出來,或是通過其它方法獲得?分析完後,提取出可用的共同引數。

接下來,我們就可以編寫計算方法了。將這種計算的每一種方式都寫成乙個dll乙個類中的方法,並將其編譯為乙個dll檔案。ms.***中,類的格式要定死,也就是說編寫的類的namespace和class要一樣,類中的方法名稱也必須是一樣的。而且,方法的引數就是上面所說的共同引數。

然後,將編譯好的dll檔案放在同一資料夾內,隨程式一起發布就可以了。

在程式中可以這樣處理所要用到的不同計算方式:給每一種計算方式起乙個名字(客戶能夠明白的),然後將這些名字放在下拉列表框的text屬性中,並將對應的dll檔名放在下拉列表框的value屬性中。這樣,使用者選擇不同的計算方式就可以呼叫不同dll檔案中的計算方法了。

下面是乙個簡單的示例:

我將計算方式的名字和dll檔名放在乙個xml檔案中,程式載入時將它們讀取到下拉列表框中。方法如下:(asp.***中)

// 在此處放置使用者**以初始化頁面

if(page.ispostback==false)

----以下lmok補充

嗯,簡單的說吧,如果你想呼叫放在乙個dll檔案中的form,可以這樣:

public form createform(string dllname,string formname)

catch{}

return fm;

}嘿嘿,爽不爽?這對於richclient程式設計的模組化,是不是特別的好呢?你可以將功能模組進行分類,分別編譯成不同的dll,使用文字檔案或者資料庫來儲存可以調研模組,在主程式中動態呼叫!

動態載入類(在程式中呼叫DLL檔案)

動態載入類 動態載入dll 檔案 本人剛剛開始編寫程式不久,開發中發現一非常好的方法。大家共享。我們在編寫程式的時候經常會遇到這樣的情況 程式中要用到某種計算,而且這種計算的計算方式很多,我們不得不在編寫程式時就要考慮的十分全面,將各種情況到考慮到。但是這樣做又非常的費力,因為我們無法 到程式編好後...

動態載入類(在程式中呼叫DLL檔案)

我們在編寫程式的時候經常會遇到這樣的情況 程式中要用到某種計算,而且這種計算的計算方式很多,我們不得不在編寫程式時就要考慮的十分全面,將各種情況到考慮到。但是這樣做又非常的費力,因為我們無法 到程式編好後,還會出現什麼樣的計算方式。如果計算方式是在交付給客戶後,客戶新提出的我們就不得不將新的計算方式...

在程式中動態載入動態庫(win)

以下內容是乙個在windows環境下的程式中載入動態庫的示例。環境 vs 1.生成動態庫 在vs中建立乙個專案,使用下面的 生成乙個動態庫windll.dll。專案建立後在專案的屬性 c c 預處理器中新增預處理巨集win dll exports,這個在windll.件中使用。ifndef win ...