2010-06-18 21 views
0

我問媒體鏈接在:使用P/Invoke可以調用什麼樣的程序集?

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

是否可以調用C/C++與調用庫託管函數與反思.NET和答案是肯定的。 我不清楚的是我可以調用使用P/Invoke任何程序集編寫/編譯/建立與我的Windows PC上的其他編譯器像Labwindows/CVI(有某種C編譯器)或Java寫的DLL,EXE。 如果這是可能的,它是否與上面給出的鏈接中使用「Marshal.GetDelegateForFunctionPointer」所解釋的相同?

謝謝! 米蘭。

+0

答案是__No__在反射部分。一致。 – 2010-06-18 11:25:06

+0

可能重複的[是否可以使用從託管代碼的C#反射調用非託管代碼?](http://stackoverflow.com/questions/2957411/is-it-possible-to-call-unmanaged-code-using-c - 從管理代碼反射) – 2010-06-18 11:25:40

+0

嗨Henk,這不是重複的,但擴展名。這就是爲什麼我提供了原始問題的鏈接。 – milan 2010-06-18 11:52:12

回答

0

使用P/Invoke,您只能調用具有列出的函數的本機非託管dll,它們會導出它們。 Java dll是由一些僞代碼(如.net中的IL)編寫的,只有java虛擬機知道如何解釋它們。

例如,Borland的pascal有一些「bpl」文件中的庫。 Pascal應用程序編譯了一些知道如何加載這些庫的引導代碼,但其他應用程序無法知道如何使用它們。

所以,你可以使用本地DLL與出口和COM DLL。

+0

謝謝,1.但如何獲得信息,如果有一些dll有導出的函數列表?或者更好的問是否有任何沒有導出函數列表的dll? – milan 2010-06-18 11:50:29

+0

@milan:看這裏http://stackoverflow.com/questions/195571/is-there-a-tool-which-lists-exported-methods-from-a-dll – 2010-06-18 12:05:59

相關問題