遇到一个麻烦 用proguard混淆后 jna调用dll报错,没混淆之前是正常的,所有jar包都是添加好了的
报的是
Error looking up function 'b'google了很久没找到答案 多数说dll没有这个方法,但是肯定不是的,没混淆之前是完全正常的,就混淆后报错
Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: Error looking up function 'b': ???????¨? at com.sun.jna.Function.<init>(Function.java:179) at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:344) at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:324) at com.sun.jna.Library$Handler.invoke(Library.java:203) at com.sun.proxy.$Proxy0.b(Unknown Source) at com.horn.main.i.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
而我另外一个程序也是 jna调用dll代码架构都差不多 混淆后又正常的
不知道什么原因,请各位帮忙看看
jna类和方法不能扰码但奇怪的是我另外一个和这个是一样的只是少量代码不一样混淆后正常呢我就奇怪
我在proguard中添加配置
<preclass="brush:java;toolbar:true;auto-links:false;">-keepclasscom.sun.jna.**{ ;}-keepclasscom.horn.util.CQZDMDLL{;}-keepclasscom.horn.util.DM{ ;}就行了,但是还是觉得我另外一个程序没有添加这样的配置依然正常运行....以后有时间再研究吧
再次留爪!今天编译又遇到相同的提示
只要保证dll的方法名不被混淆就可以了比如我的那个dll类名叫DM
-keepclasscom.horn.util.DM{;}
这样配置后就OK了
但是另外一个程序什么都没配置依然正常反编译jar后连DM这个类名都不见了依然正常真特么奇怪
native代码不能混淆呦
-keepclasseswithmembernamesclass*{
native<methods>;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。