【问题标题】:How can I use a native DLL from C#?如何使用 C# 中的本机 DLL?
【发布时间】:2012-09-20 01:04:54
【问题描述】:

给定一个本地 DLL,没有文档或任何东西,并假设它不是 COM 组件,有没有办法从该 DLL 中提取某种接口,以便可以从 C# 调用它?

我知道 PInvoke,但这要求我已经知道方法名称和签名。我没有这些。

有可能吗?

【问题讨论】:

  • 如果方法签名被导出,您可以使用一些工具来读取它们,然后使用 P/Invoke 与 dll 进行互操作。否则,您将不得不想办法找到“入口点”并调用它们。可能必须用 C++/CLI 或其他东西来做到这一点......

标签: pinvoke native-code


【解决方案1】:

您可以使用 PE 阅读工具列出导出的函数。例如Dependency Walker 会为你做这些。

不过,您可以利用这些信息做很多事情。没有原生 DLL 的元数据告诉您如何调用这些函数,它们的签名是什么。甚至参数代表什么。

这个项目出了点问题。仅靠 DLL 是不够的。您需要一个头文件和一些文档。

【讨论】:

  • 不,项目没有问题。尽管有不合作的第三方,我确实在进行实况调查,以确定该项目是否可行。看起来答案是否定的 - 节省了大量时间:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多