免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: snow888
打印 上一主题 下一主题

JNI 调用,求助。 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-11-16 16:33 |只看该作者
System.loadLibrary("libCertSys.so");  不对,不用加.SO

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2012-11-16 16:45 |只看该作者
@nan_jia 那如果我是要在 linux 下调用 dll 的文件呢?

论坛徽章:
0
13 [报告]
发表于 2012-11-16 16:49 |只看该作者
LINUX 下不都是 SO 吗,JAVA 是跨平台,所以加载的时候不用指定 .SO 或是 .DLL

论坛徽章:
6
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:582015年辞旧岁徽章
日期:2015-03-03 16:54:15
14 [报告]
发表于 2012-11-19 15:56 |只看该作者
.h中的
JNIEXPORT jint JNICALL Java_CertSys_sub
JNIEXPORT jint JNICALL Java_CertSys_add
这两个函数没有实现吧?
要在.c里实现下,函数名不能改

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
15 [报告]
发表于 2012-11-19 23:01 |只看该作者
@realmon我就是不知道这个里面该如何实现。

如果不是结构,我做过,但如果是结构,就不知道该如何做了。

论坛徽章:
6
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:582015年辞旧岁徽章
日期:2015-03-03 16:54:15
16 [报告]
发表于 2012-11-20 08:59 |只看该作者
@snow888
你的代码用了java的内部类,
public class Sj {
...
}
会生产2个.h文件, 应该还有个CertSys_Sj.h
找找看

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
17 [报告]
发表于 2012-11-21 08:45 |只看该作者
@realmon没发现两个,就是一个啊。

论坛徽章:
6
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:582015年辞旧岁徽章
日期:2015-03-03 16:54:15
18 [报告]
发表于 2012-11-21 09:21 |只看该作者
重新javah看看是不是能生成2个.h文件
我试过了是生成2个h文件
ps.取参数的方法在jdk下的jni.h中
@snow888

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
19 [报告]
发表于 2012-11-21 17:17 |只看该作者
@realmon

是发现两个了,分别是

"CertSys.h"
  1. /* DO NOT EDIT THIS FILE - it is machine generated */
  2. #include <jni.h>
  3. /* Header for class CertSys */

  4. #ifndef _Included_CertSys
  5. #define _Included_CertSys
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. /*
  10. * Class:     CertSys
  11. * Method:    sub
  12. * Signature: (LCertSys/Sj;)I
  13. */
  14. JNIEXPORT jint JNICALL Java_CertSys_sub
  15.   (JNIEnv *, jclass, jobject);

  16. /*
  17. * Class:     CertSys
  18. * Method:    add
  19. * Signature: (LCertSys/Sj;)I
  20. */
  21. JNIEXPORT jint JNICALL Java_CertSys_add
  22.   (JNIEnv *, jclass, jobject);

  23. #ifdef __cplusplus
  24. }
  25. #endif
  26. #endif
复制代码

"CertSys_Sj.h"
  1. /* DO NOT EDIT THIS FILE - it is machine generated */
  2. #include <jni.h>
  3. /* Header for class CertSys_Sj */

  4. #ifndef _Included_CertSys_Sj
  5. #define _Included_CertSys_Sj
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. #ifdef __cplusplus
  10. }
  11. #endif
  12. #endif
复制代码
下面该如何做?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2012-11-21 17:18 |只看该作者
@nan_jia

可我还需要在 linux 下调用 dll 的文件啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP