当前位置:  开发笔记 > 编程语言 > 正文

.NET PInvoke可以从用户指定的目录动态加载本机dll吗?

如何解决《.NETPInvoke可以从用户指定的目录动态加载本机dll吗?》经验,为你挑选了1个好方法。

我有一个.NET应用程序,需要加载一个本地库,其位置由用户指定.PInvoke看起来只会从全局搜索路径(或编译时指定的路径?)加载.最好的方法是创建一个在运行时调用LoadLibrary的C++/CLI程序集吗?

C++/CLI会比C#PInvoking LoadLibrary更简单吗?



1> JaredPar..:

如果您已经有一个C#/ VB.Net项目,那么只需要PInvoke LoadLibrary以便加载DLL就会简单得多.它从现有的dll中进行一次快速PInvoke调用

public partial class NativeMethods {

    /// Return Type: HMODULE->HINSTANCE->HINSTANCE__*
    ///lpLibFileName: LPCWSTR->WCHAR*
    [System.Runtime.InteropServices.DllImportAttribute("kernel32.dll", EntryPoint="LoadLibraryW")]
public static extern  System.IntPtr LoadLibraryW([System.Runtime.InteropServices.InAttribute()] [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPWStr)] string lpLibFileName) ;

}

只需添加此代码就比添加完整的C++\CLI项目快得多.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有