2012-09-20 47 views
1

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

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

这有可能吗?

+0

如果导出方法签名,则可以使用工具读取它们,然后使用P/Invoke与dll进行交互。否则,你将不得不找出找到“切入点”并调用它们的其他方式。可能必须使用C++/CLI或其他方法来做到这一点...... –

回答

1

您可以使用PE阅读工具列出导出的功能。例如Dependency Walker将为您做到这一点。

虽然你可以用这些信息做的并不多。没有元数据与本地DLL,告诉你如何调用这些函数,他们的签名是什么。甚至参数代表什么。

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

+0

不,项目没有错。我真的在进行一项实情调查工作,以确定项目是否可行,尽管不合作的第三方。看起来答案是否定的 - 所以节省了大量的时间:) –