您的位置:首页 > 编程语言 > Java开发

关于Java调用32/64位dll的问题

2016-04-20 09:37 495 查看
最近在做一个项目,需要用到java的jni接口调用C++,本来很简单的一件事,却把我搞得晕头转向。是什么问题呢?32位与64位的问题。

由于C++要调用一个已经编译好,且没有源码的32位dll文件,所以最后编译好的dll是32位的。对于一个菜鸟来说,编译好了之后肯定不会去考虑32位的dll到底能不能用,而是着急的去部署,运行,然后满怀期待的等待虚拟世界的精彩。然后,理想很丰满,现实很骨感。Boom。。。。。报错了。错误提示:Can't
load IA 32-bit .dll on a AMD 64-bit ......意思很明显,你现有的环境是64位的,而这个dll文件是32位的,肯定不能调用。

到现在才突然意识到,统一平台、工具的重要性。废话不多说了,解决问题吧。。。首先想到的当然是将这个程序重新编译一份64位的dll。就可以解决了。。可是,本程序调用了一个32位的dll,这个是不能编译成64位的。问题又来了,该怎么解决呢?

然后网上搜索各位大神的解决方案,又说用RMI的,又说COM的,等等。。。可是菜鸟的我不懂啊,宝宝心里的苦谁能知?可是,我相信肯定有比较简单的解决办法的(这是程序员的通病,遇到自己不会的就说人家难,想去找简单的,其实就是自己会的。。。。)。通过研究(就是简单想了想),dll不能变,那么java程序总可以变吧。把java程序换成32位不就行了吗?心动不如行动,赶快实践起来:

第一步:安装32位的jdk,然后配置环境变量(不用删除之前的64位的jdk)

第二步:运行程序,oh。。。问题解决了。。。。

正当我高兴地把程序部署到javaweb上时,发现又报错了。。。不要心急,这个时候的问题已经不是问题了。。MyEclipse自带Tomcat,而且自带jdk这个大家都知道,那么现在报错了一定是JDK版本不对喽。这个时候该怎么解决我想我也不用多说了。。。。不过还是说一下吧:

第一步:Windows-preference-java

第二步:Installed JRE

第三步:add

ok!!!!!!!!!!!! please restart it
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: