有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在JNIcreated dll中使用dll的java问题

我正在从事一个Java项目,其中我必须使用第三方dll(比如abc.dll)。因此,我使用JNI创建了一个本机头文件

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

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

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

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

然后我尝试了使用ABC的C++应用程序。dll。成功了

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

任何帮助都将不胜感激

先谢谢你

-海达尔

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


共 (1) 个答案

  1. # 1 楼答案

    我已经解决了这个问题。问题是,我正在创建一个win32应用程序的项目,然后选择了dll。我创建了一个clr应用程序,一切都很顺利。我听从了here的指示