2010-08-24 165 views
1

我們使用的是外部DLL爲:如何修改DLL文件

[DllImport("DemoExport.dll")] 
    public static extern string GetDBConnection(string sDBName); 
    [DllImport("DemoExport.dll")] 
    public static extern int CreateEmptyDBFromDB(string SourceDBName, string DestinationDBName); 
    [DllImport("DemoExport.dll")] 

現在,我們要在相同的模式添加新的方法。 ?我們正在尋找那有沒有什麼辦法來實現DemoExport.dll方法,所以我們可以使用的方法說DemoMethod(),如:

[DllImport("DemoExport.dll")] 
    public static extern void DemoMethod(); 

它看起來像一個瘋狂的問題,但我們真的需要這樣實現這個方法,稍後我們可以使用相同的方法。

此外,如果以上是不可能的,那麼如何創建一個新的dll或說如何使用像C#中不可用的DllExport。所以,laterly,任何人都可以使用的方法與屬性

[DllImport("dllname.dll")] 
publis statis extern void mymeth(); 
+1

奇怪的問題。只需修改DLL的代碼即可。 – 2010-08-24 16:13:29

回答

1

我不知道我理解正確的話,但是你要添加的方法現有 DLL。如果我是正確的,那麼這是不可能的。其他選項包括:

  • 該DLL的找貨源,添加方法,並重新編譯
  • 創建新的DLL和實施方法存在和DllImport
+0

感謝澄清,我編輯的問題,請現在檢查 – 2010-08-24 16:06:44

3

使用新的名稱不能使用C#將方法添加到現有的預編譯的* .dll。

您必須找到DLL的來源,編寫您的方法,重新編譯,然後利用C#中的新方法。

編輯

我還是不知道你在你的更新要求的。如果你想寫一個可以被其他C#用戶使用的新方法,那麼你不必對屬性做任何特殊的處理。只需在公開課上寫一個公開的方法。

之後,任何.NET使用者都可以爲您的類添加程序集引用並使用您的方法。

如果您希望任何Windows使用者能夠使用您的代碼,則可以調查COM Interop。

如果你還在嘗試使用C/C++ DLL,那麼我的原始答案仍然存在。

+0

感謝和抱歉不寫好,因爲你無法理解我的問題。 讓我嘗試表示相同的: 三種方法在某些非託管代碼中,我們正在使用dll 現在我們使用我原始代碼中所述的函數。 現在我必須添加一個新方法,這個新方法將在我的類庫項目中使用上述三種方法。 這是因爲我們必須將該項目的dll提供給另一個項目。現在做什麼? – 2010-08-25 10:09:19