【问题标题】:Finding an unmanaged dll API?寻找非托管的 dll API?
【发布时间】:2010-09-16 13:36:45
【问题描述】:

我正在用 C# 编写。
如何找出可以在不属于 Windows 的非托管 dll 中使用的方法/函数?
示例:我在我的计算机上安装了一些软件,它有一个 dll,我想知道我的选择是如何创建代码以连接到该软件?

【问题讨论】:

    标签: c# api dll


    【解决方案1】:

    PInvoke.net 是 .NET 互操作的绝佳资源。它们不仅列出了 Windows 本机库中可用的函数,还列出了您需要在 .NET 代码中使用的签名。

    【讨论】:

    • pinvoke.net 是否包含 win32 中没有的 dll?
    • 我认为那里还有其他非托管 API,但我不确定是哪些。
    【解决方案2】:

    对于您没有参考的本机 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

    【讨论】:

      【解决方案3】:

      使用 Depends.exe(与 VS 一起提供)。

      Depends 将显示所有可以使用 Pinvoke 从托管代码调用的导出函数。

      【讨论】:

        【解决方案4】:

        我读了一篇关于 PInvoke Interop Assistant 的博客,它也可以处理我们自己的 DLL http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=14120

        【讨论】:

          【解决方案5】:

          我想补充一点如果它是一个 COM 程序集,就像一个 VB6 COM 组件,它可以在 Visual Studio 中的 Object Explorer 中浏览,这非常好,因为它打破了一切非常适合你。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-10-14
            • 2017-10-16
            • 1970-01-01
            • 1970-01-01
            • 2017-08-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多