0

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

然后我在 vs2005(典型的 win32 应用程序)上创建了一个 dll 项目,并添加了由 JNI 创建的头文件。我为项目选择了 clr old syntax support,并添加了 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 应用程序中使用该包装 dll。

任何帮助将不胜感激。

提前致谢...

-海达尔

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

4

1 回答 1

1

我已经解决了这个问题。问题是我将项目创建为 win32 应用程序并选择 dll。我创建了一个 clr 应用程序,一切顺利。我按照这里的说明进行操作。

于 2012-09-30T14:13:14.147 回答