idea 打dll、so包

10 篇文章 0 订阅

写在前面:

参考了:https://blog.csdn.net/huachao1001/article/details/53906237

但是这篇文章有很多问题,配置gcc可以参考上面。

链接: https://pan.baidu.com/s/1slpQrrJ
密码: fykw

下载解压后,配置环境变量。

创建项目:

IDEA社区版。

什么都别选。

 打钩,确认。

java文件生成jni:

新建java文件:(库名提前想好)

这块跟android的jni一样,terminal命令生成.h文件:

javah -jni -classpath (搜寻类目录) -d (输出目录) (类名)

注意,必须运行一下项目生成class文件。(截图中out文件夹)

这里需要注意一下:-classpath后面跟的目录是out的;并且到项目根目录停止。

javah -jni -classpath  D:\IdeaProjects\2\out\production\2 -d D:\IdeaProjects\2\jni  com.company.HelloJNI

运行后生成:.h文件

 新建一个名字相同的.c,在这个例子里就是HelloJNI.c。.h文件名字不要改。

这里是C基础了,不赘述。

打dll、lib包:

gcc -shared  -I "D:\Java\jdk1.8.0_201\include"-I "D:\Java\jdk1.8.0_201\include\win32" -o  hello.dll HelloJNI.c

需要加入链接库-I,一个是jdk的include,一个是include下的win32。

主要是为了jni.h加入的,gcc的具体命令可以百度下哦。

gcc是“写在前面”里提前准备好的。C用gcc,C++用g++。

dll文件看不到的话,文件夹闭开一下:

C++用g++去编译,如果报错找不到:xxx.cpp: No such file or directory

记得把cpp文件路径写对,或者cd到jni里面。

dll引入:

这个时候运行HelloJNI.java文件,还是会报错:

idea no hello in java.library.path

dll没有自动引入,需要手动加进去,这点真不如android studio:

File -> Project Structure -> Library -> + -> 选中项目中的dll文件 -> OK

最终是下图这样子:

再运行一下:

 OK啦。

写在最后:

1.参考资料可以看看,但是细节太差,错误很多。

百度上面很多复制粘贴也是不行,请教了c++工程师,他帮我写的gcc编译的。

gcc -Wl,--..... 这个编辑器直接报语法错误。

2.静态包就是gcc指令改成-static,文件名改成hello.lib。

3.网络上铺天盖地的HelloJNI编译jni,但是都没有提到多文件怎么打包,我也正在摸索。公司项目都是层层嵌套,引入第三方库的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值