一般想到 java 调用 dll,哪怕你从来没有做过,也应该知道有个叫 jni 的东西
按照常规的想法,jni 肯定是需要生产 dll 的时候进行对接的,主要是实现一些和 java 交互的规范
以上都是很常规的想法
于是我调项目的时候,发现他们 c++ 端的头文件并没有实现 jni 规范,我就是说你们怎么不实现呢,随便一个 dll 我 java 就能调吗
他们开始说以前也这样的 c++ 端不用开发的,后来发现项目里确实也有 jni 的写法,于是给我加班去搞了
结果我静下心来发现,怎么之前项目的例子导入的包不是 jni 啊,于是一研究
##****哎呦,竟然还有个叫 JNA 的东西
不需要 dll 做任何的对接,java 直接可以调任何的 dll,只要你知道方法签名
这么说我坑了他们 c++ 加班了。
好在后来我又研究了下,我们要调那个 dll 的方法签名比较复杂,结构体套结构体,jna 倾向于简单类型的调用,如果是复杂的参数,虽然说应该也行
但还是比较复杂的,就算行我要搞估计也要研究好久好久,为了项目顺利,还是用 jni 比较科学合理。。
这世界就是那么神奇, 先入为主真是害死人,这是防不胜防啊!!!!!
一定要仔细认真的对待那些不懂的领域啊
这事情千万不能让他们 c++ 知道
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于