由于的项目的需要,现在要在WEB实现一个功能,就是做图像转换。
我用VC封装自己公司的图像引擎为DLL,然后写了个小程序测试,可以正确的转换图像(转换成其他格式的图片),也可以得到图像的一些其他信息。比如:长,宽,DPI等值。
然后用JAVA的JNI调用DLL的函数(称为旧DLL),生成一个新的DLL。实现图像转换。我也写了个小程序测试JNI生成的新DLL,图像转换失败。我通过跟踪发现,传递的参数是正确的。一直跟踪到旧DLL里面。发现在图像转换一块失败了。但图像的基本信息也可以得到。比如:长,宽,DPI等值。都可以得到。也可以拷贝源图像到另外一个路径下。就是把图像转换成其他图像失败。如果旧DLL封装的有问题,但VC可以调用成功。我们目前的系统也是用的这个图像引擎,运行一直很好。如果JNI那部分写的有错,但也可以得到图像的基本信息。我曾经做过如下测试:
1.用C写了个控制台程序,通过动态链接DLL,也可以转换图像。排除了与MFC初始化有关的问题。
2.用VC写了个小程序,也可以转换图像。
3.用JAVA做测试就失败了。但我在C控制台里面把JAVA调用失败的情况模拟了一遍,是这样模拟的。我把封装的DLL,拷贝到一个路径,只加了这一个DLL(因为这个DLL又是调用的COM组件和其他的DLL,有很多DLL)。程序执行的过程与JAVA程序执行的路线一摸一样。然后我把其他的DLL拷贝到这个路径下,就成功了。这是在C控制台的情况。如果此时猜测JAVA调用时,是由于DLL不全引起的,但得到图像的信息也是通过图像引擎得到的,也是通过其他 的DLL得到的。排除了这个可能。在VC执行下的DLL与JAVA执行下的DLL是一摸一样的。请大家帮我分析分析,可能在哪里出错了。项目急啊。这个功能做不了,系统就大打折扣了。整个项目都成问题了。