首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java小程序,加载本机dll时出现问题

Java小程序,加载本机dll时出现问题
EN

Stack Overflow用户
提问于 2011-03-23 20:06:15
回答 1查看 1K关注 0票数 0

我正在编写一个Java applet,它加载在非托管C++中创建的动态链接库。我正在写一些基本的测试来加载它。

代码如下:

DLL:

代码语言:javascript
复制
#define DllExport _declspec(dllexport)
DllExport int calc();


DllExport int calc() {
return 1000;
}

小程序:

代码语言:javascript
复制
import java.applet.*;
import java.awt.*;


public class app extends Applet {

   int width, height;
   private native int calc();

   public void init() {
   try {
       System.loadLibrary("appletdll.dll");
       setBackground( Color.black );
   }
   catch(Exception e) {
       setBackground( Color.red );
               // for debugging, is there another way to for example print 
               // exception messages in an applet?
   }

   //width = getSize().width;
   width = calc();
   height = getSize().height;
  }

  public void paint( Graphics g ) {
     g.setColor( Color.green );
     for ( int i = 0; i < 10; ++i ) {
         g.drawLine( width, height, i * width / 10, 0 );
     }
  }
}

运行小程序的HTML:

代码语言:javascript
复制
<html>
<head><title>simple page</title></head>
<body>

<applet width=400 height=400 code="app.class" archive="apptest.jar"> </applet> 

</body>
</html>

在Firefox中运行时,我得到的只是一个400x400的黑色背景。当在applerviewer中运行时,我在calc()上得到一个UnsatisfiedLinkError。

使用以下指南对.jar进行签名:http://wiki.plexinfo.net/index.php?title=How_to_sign_JAR_files

在我拥有的文件夹中: app.class,apptest.jar,appletdll.dll,applet.htm,

myKeystore

我可能做了很多错误的事情,我只是想让一些基本的东西工作起来。我一直在看applet+dll指南,但它们大多都过时了。如果有什么不清楚的地方,尽管问。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-23 20:11:42

首先,应该将该函数称为Java_app_calc()。其次,它应该接受一个"JNIEnv *“类型的参数。这应该就行了。

如果您运行"javah“程序,它可以为您生成C/C++头文件,这将帮助您获得正确的函数名称和签名。参数是类的名称(它对已编译的类文件进行操作:

javah应用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5404975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档