代码之家  ›  专栏  ›  技术社区  ›  Nick

动态P/调用DLL

  •  7
  • Nick  · 技术社区  · 17 年前

    从.NET动态P/调用非托管代码的最佳方法是什么?

    例如,我有许多非托管DLL,它们之间有常见的C样式导出。我希望获取DLL的路径,然后根据导出的名称P/Invoke函数。直到运行时我才知道DLL名称。

    LoadLibrary 和 GetProcAddress 对于.NET?(我有使用这些函数来实现相同目标的现有代码,完全在非托管代码中)。

    4 回复  |  直到 17 年前
        2
  •  3
  •   SWB    6 年前

    您可以通过P/调用LoadLibrary和GetProcAddress,然后使用 Marshal.GetDelegateForFunctionPointer .

    this article .

        3
  •  2
  •   SWB    6 年前

    也看到 this Jonathan Swift的博客文章标题从.net动态调用非托管dll

        4
  •  0
  •   JaredPar    17 年前

    您可以选择创建一个本机函数,该函数负责将适当的DLL和函数加载到内存中,然后根据您的路径将该函数返回到托管代码中。通过这种方式,您可以自然地使用GetProcAddress技巧并返回函数点。然后,您可以将PInvoke插入该函数并获取一个委托,该委托随后将调用到适当的DLL中。