使用C#问题加载/卸载C dll

时间:2010-04-12 18:36:39

标签: c# c dll

我遇到外部本机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

有没有办法可以实现这个人用他的榜样做的事情?

3 个答案:

答案 0 :(得分:1)

我不确定是否有更简单的方法,但您可以随时加载一个动态加载/卸载导致您出现问题的其他DLL的DLL。

答案 1 :(得分:0)

也许你可以用COM包装dll,然后利用COM基础设施来加载和卸载DLL ......然后你可以从它的Com Callable Wrapper中与dll进行交互,当你添加对它的引用时生成它COM dll。如果你真的想要了解何时卸载,在获得对象的引用后,你可以指定调用Marshal.ReleaseComObject来释放它的引用。

有关详细信息,请参阅此处... COM Wrappers

答案 2 :(得分:0)

对于他可能关心的人,我在以下链接中找到了解决方案......

http://www.codeproject.com/KB/cs/dyninvok.aspx?fid=2892&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=3436363&fr=26#xx0xx

它需要一些汇编程序编码......它可以工作:))))