【问题标题】:What kind of assemblies can be called using P/Invoke?使用 P/Invoke 可以调用哪些程序集?
【发布时间】:2010-06-18 19:24:28
【问题描述】:

我已经问过:

Is it possible to call unmanaged code using C# reflection from managed code ?

如果可以使用 Invoke 和来自 .NET 的反射调用 C/C++ 库非托管函数,答案是肯定的。 我不清楚的是,我是否可以在我的 Windows PC 上使用 P/Invoke 与其他编译器一起编写/编译/构建任何程序集,例如 Labwindows/CVI(具有某种 C 编译器)或 Java 编写的 dll、exe。 如果这是可能的,它是否与上面使用“Marshal.GetDelegateForFunctionPointer”的链接中解释的相同?

谢谢! 米兰。

【问题讨论】:

标签: .net reflection pinvoke unmanaged


【解决方案1】:

使用 P/Invoke,您只能调用已列出它们导出的函数的本机非托管 dll。 Java dll 是托管的,用一些伪代码编写(如 .net 中的 IL),只有 java 虚拟机知道如何解释它们。

例如,Borland 的 pascal 在一些“bpl”文件中有它的库。 Pascal 应用程序编译了一些引导代码,这些代码知道如何加载这些库,但其他应用程序不知道如何使用它们。

因此,您可以将本机 dll 与导出和 COM dll 一起使用。

【讨论】:

  • 谢谢, 1. 但是如果某些 dll 具有它导出的函数列表,我如何获取信息?或者更好地问有没有不导出函数列表的dll?
猜你喜欢
  • 1970-01-01
  • 2010-09-26
  • 2014-02-24
  • 2011-05-02
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多