在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 楼答案
我已经解决了这个问题。问题是,我正在创建一个win32应用程序的项目,然后选择了dll。我创建了一个clr应用程序,一切都很顺利。我听从了here的指示