2010-04-12 109 views
0

我有外部原生DLL的問題。加載/卸載與C#問題的C DLL

我正在研究ASP.NET 1.1 Web應用程序,並且有通過DLLImport指令加載的這個DLL。

這是我如何映射DLL功能:

[DllImport("somedllname", CallingConvention=CallingConvention.StdCall)] 
    public static extern int function1(string lpFileName,string lpOwnerPw,string lpUserPw); 

    [DllImport("somedllname", CallingConvention=CallingConvention.StdCall)] 
    public static extern int function2(int nHandle); 

我調用的DLL方法和所有的偉大工程,但我有這個DLL問題撞毀我的網站上的一些情況,所以我想一個選項在我使用它之後卸載dll。

我在這個鏈接找到了一個解決方案,但是我沒有.NET 1.1中的'UnmanagedFunctionPointer'屬性。

http://blogs.msdn.com/jonathanswift/archive/2006/10/03/Dynamically-calling-an-unmanaged-dll-from-.NET-_2800_C_23002900_.aspx

有沒有一種方法,我可以做到這傢伙用他的例子一樣?

回答

1

我不確定是否有更簡單的方法,但你總是可以加載一個DLL動態加載/卸載其他DLL導致你的問題。

+0

你的意思是我應該創建另一個.net 1.1 dll這是否做到這一點?如果是這樣,我的問題與初始方法有什麼不同?或者,也許我沒有跟着你。 – Goran 2010-04-12 18:45:18

+1

@Goran:我的意思是C++ dll可以調用另一個LoadLibrary和FreeLibrary。 – 2010-04-12 19:01:55

0

也許你可以用COM包裝DLL,然後利用COM基礎結構來加載和卸載DLL ...然後,您可以通過它的Com Callable Wrapper與DLL進行交互,這是在添加引用時生成的COM DLL。如果你真的想獲得關於何時卸載的具體信息,在獲得對該對象的引用後,可以指定調用Marshal.ReleaseComObject來釋放它的引用。

欲瞭解更多信息,請點擊這裏... COM Wrappers