在JNI创建的dll中使用DLL的问题

时间:2012-09-27 07:00:10

标签: java c++ dll visual-studio-2005 java-native-interface

我正在开发一个Java项目,我必须使用第三方dll(比方说abc.dll)。所以我使用JNI创建了一个本机头文件。

然后我在vs2005(典型的win32 app。)上创建了一个dll项目,并添加了由JNI创建的头文件。我为项目选择了clr旧语法支持,并添加了abc.dll作为我项目的参考。

到目前为止,一切都很好。这是问题所在。我使用abc.dll中的一些方法实现了头文件中定义的方法。 abc.dll有一个名为“abc”的类,这就是我所做的:

abc *abcObj = new abc(); abcObj->callSomeMethod();

我从解决方案中获取构建,一切正常。但是当我运行我的Java程序时,我从JVM收到错误,告诉本机代码崩溃了?!?!我调试了它,问题出在new()中。它根本无法实例化abcObj。

然后我尝试使用该abc.dll的c ++应用程序。它奏效了。

我认为JNI或托管/非托管事件一定存在问题。我对c / c ++并不是很有经验,所以我不太了解(至少我现在没时间理解)。我唯一想做的就是使用第三方dll创建一个包装器dll,并在我的java应用程序中使用包装器。

任何帮助将不胜感激。

提前致谢...

-haydar

编辑:我拥有第三方dll所需的所有dll。

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。问题是我正在创建项目作为win32应用程序,然后选择DLL。我创建了一个clr应用程序,一切顺利。我按照here的说明进行操作。