使用P / Invoke可以调用哪种程序集?

时间:2010-06-18 11:12:46

标签: .net reflection pinvoke unmanaged

我已经问过:

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”相同吗?

谢谢! 米兰。

1 个答案:

答案 0 :(得分:0)

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

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

因此,您可以使用带有导出和COM dll的本机dll。