2012-07-25 61 views
1

我试图在c#中使用外部.dll文件编码,在我的Java应用程序中,我知道它包含的接口与我们可以使用的函数的dll,我可以将DLL加载到我的Java应用程序,但我如何使用它内的接口?我不知道JNI如何在这种情况下提供帮助。请帮助。在java中使用C#dll

+0

JNI仅适用于本机库,不适用于托管代码。 – 2012-07-25 10:30:16

回答

1

我怀疑你需要使用Java/COM桥如JACOB,或Java Native Access(你可能必须写一个桥梁,因为JNA是本地只访问)。

请参阅this SO answer了解更多详情。

+0

我们可以使用JNA java 7不是6吧? – ama 2012-07-25 11:13:29

1

您可以使用由Robert Giesecke编写的项目模板从您的C#DLL创建本地导出。这使您可以在C#DLL中创建原生C风格API导出,并从Java或几乎任何其他语言调用它们。向下滚动到Unmanaged Export Library文件的页面底部。

或者,您可以使用ComVisible创建COM类并从Java访问它。

+0

我应该把使用ComVisible的类放在dll文件中,然后在java应用程序中使用它吗?如果是这样,我应该如何导入并调用它? – ama 2012-07-25 10:50:30

+0

是的。这里是[示例](http://msdn.microsoft.com/en-us/library/c3fd4a20.aspx)。您需要将该DLL标记为COM Visible。请阅读[此问题](http://stackoverflow.com/questions/7092553/turn-a-simple-c-sharp-dll-into-a-com-interop-component)了解更多信息。 Brian Agnew的回答涵盖了在Java中使用COM。 – Polynomial 2012-07-25 10:53:20