JNI,C++,终于调试通过

3 篇文章 0 订阅
第一步,写hello.java
第二步,执行javac hello.java
第三步,执行javah -jni hello(如果写成hello.class会报错),生成hello.h
第四步,创建一个C++的dll,比如叫hello
第五步,将hello.h,jni.h,jni_md.h拷贝到hello工程目录下,添加进工程里
第六步,修改hello工程中的hello.h中的#include <jni.h>成#include "jni.h"
第七步,在hello工程中添加hello.cpp,在hello.cpp添加#include "hello.h",把hello.h中的函数声明拷贝到hello.cpp
第八步,实现功能
第九步,编译hello生成hello.dll,将hello.dll拷贝到hello.java所在的目录下
第十步,执行java hello看效果

Java部分代码如下:
public class hello {
        static {
                System.loadLibrary("hello");
        }

        public native static void test(int s);

        public static void main(String[] args) {
                hello test = new hello();
                test.test(200);
        }
}

如果是包,比如package hellopackage:
建立hellopackage目录,将hello.java拷贝进去后执行javac hello.java,生成hello.class
注意:需要回到上级目录,再执行javah -jni hellopackage.hello即可生成hellopackage_hello.h

调试心得:发现错误UnsatisfiedLinkError,是头文件的函数声明与源文件的函数定义不一样导致的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值