【发布时间】:2010-09-16 13:36:45
【问题描述】:
我正在用 C# 编写。
如何找出可以在不属于 Windows 的非托管 dll 中使用的方法/函数?
示例:我在我的计算机上安装了一些软件,它有一个 dll,我想知道我的选择是如何创建代码以连接到该软件?
【问题讨论】:
我正在用 C# 编写。
如何找出可以在不属于 Windows 的非托管 dll 中使用的方法/函数?
示例:我在我的计算机上安装了一些软件,它有一个 dll,我想知道我的选择是如何创建代码以连接到该软件?
【问题讨论】:
PInvoke.net 是 .NET 互操作的绝佳资源。它们不仅列出了 Windows 本机库中可用的函数,还列出了您需要在 .NET 代码中使用的签名。
【讨论】:
对于您没有参考的本机 DLL,您可以使用 Visual Studio SDK 中的 dumpbin 实用程序来提取 DLL 中的导出函数列表。
垃圾箱参考在这里:http://msdn.microsoft.com/en-us/library/c1h23y6c(VS.71).aspx
这里有一个 CodeProject 页面,提供了一些关于如何使用 dumpbin 以及查找正确的 P/Invoke 签名的更多详细信息:http://www.codeproject.com/KB/mcpp/usingcppdll.aspx#Retrieve
【讨论】:
使用 Depends.exe(与 VS 一起提供)。
Depends 将显示所有可以使用 Pinvoke 从托管代码调用的导出函数。
【讨论】:
我读了一篇关于 PInvoke Interop Assistant 的博客,它也可以处理我们自己的 DLL http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=14120
【讨论】:
我想补充一点如果它是一个 COM 程序集,就像一个 VB6 COM 组件,它可以在 Visual Studio 中的 Object Explorer 中浏览,这非常好,因为它打破了一切非常适合你。
【讨论】: