【问题标题】:Entry point not found in dynamically loaded dll在动态加载的 dll 中找不到入口点
【发布时间】:2014-05-14 07:15:52
【问题描述】:

在我的 Windows 应用程序中,我必须动态加载一个 dll。我通过 DllImport 属性实现了这一点。但是,当我在 DLL 上的 Visual Studio dumpbin /exports 的开发人员命令提示符中执行命令时,只列出了 5 个函数。我看不到我需要的功能。但是我可以在静态链接时使用该方法。有什么方法可以动态访问所需的功能。

【问题讨论】:

  • 如果 dll 是你自己的……你确定这个入口点是公开的吗?
  • 不,它不是我自己的 dll。
  • 我想问题仍然存在......它是公共方法吗?
  • 是的,它是公开的。当我静态加载 dll 时,我可以访问该方法。

标签: c# .net dll pinvoke dllimport


【解决方案1】:

您只能调用导出的 DLL 中的函数。如果这是您的 DLL,那么您需要重新编译它以导出您需要调用的函数。如果它不是你的 DLL,并且函数没有导出,那么你就不走运了。

您在 cmets 中声明当您静态链接到 DLL 时可以调用该函数。这意味着该函数已导出。它的名字很可能被破坏或装饰,以至于你认不出它。一旦您可以计算出损坏或修饰的名称是什么,您将能够通过运行时链接链接到该函数。

另一种可能性是该函数是从不同的 DLL 导出的,或者甚至可能是在静态库中定义的。如果没有更多细节,我们无法为您提供比这更明确的信息。

【讨论】:

  • 所以我必须静态加载dll并访问所需的方法??
  • 没有。如果您可以使用静态 DLL 链接链接到该函数,您也可以在运行时链接到它。请注意,该问题没有提及静态链接。该信息仅出现在 cmets 中。也许您应该编辑问题。
猜你喜欢
  • 2012-12-08
  • 2013-11-17
  • 2012-04-30
  • 2012-10-18
  • 2011-10-19
  • 2011-06-07
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
相关资源
最近更新 更多