从Java调用.NET DLL

4
我正在尝试从Java代码(通过C++本机代码)使用.NET DLL。 流程如下:
  1. 使用Visual Studio 2010创建C#类库类型项目,创建.NET DLL。
  2. 创建本机C++代码(Console应用程序)来使用此DLL 使用Microsoft的逐步指南。该代码能够成功调用DLL代码。
  3. 编写具有一些本机方法的Java代码,生成头文件并在C++ DLL项目中实现头文件(将示例中的原始代码移动到相关方法中,使一些变量成为全局变量)。
该DLL已成功加载,但在为托管类创建接口指针时,代码失败。
请参见Microsoft指南中的片段。
 // Create the interface pointer.
ICalculatorPtr pICalc(__uuidof(ManagedClass));

请注意,此调用在控制台应用程序中成功返回,但在通过JNI流调用时,JVM会崩溃。

2
你可以尝试使用http://jni4net.sourceforge.net/,完全跳过C++层。 - parapura rajkumar
是的,我尝试过那个方法,效果非常好,但是我不应该在这个解决方案中使用任何第三方库,这就是为什么我要从头开始做这个的原因。 - Abhijeet Apsunde
实现项目使用的方法。 - Security Hound
1个回答

1

我的Java代码在64位JVM中运行,替换为32位后不再出现JVM崩溃。


我还发现了一种不需要注册本地/托管DLL的替代方法。很快会发布一篇文章。 - Abhijeet Apsunde
这是文章和示例代码的链接。http://codefry.blogspot.com/2012/01/calling-net-dlls-from-java-code-without.html - Abhijeet Apsunde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接