各位大侠好!小弟想把一个opencv功能模块打包成一个动态链接库dll文件,然后用java程序来调用这个dll
现在dll的打包和java端程序都没什么问题
问题出现在这两者之间的数据传递上
我想把从java前台窗体程序中获得的一个图片路径,用字符串String的形式传递给opencv的dll功能模块
在用javah生成头文件后,String就自然就变成了jstring
而opencv中和c++是一致的,在处理字符串上用的是char*(这里我不用模板类库string)
我查了一些资料,有方法将jstring类型的数据转换成char*类型
最简单的是一个函数
[color=#FF0000]const char3 fname = (char3 ) env - >GetStringUTFChars(filename, 0) ; / /接受绝对路径的字符串参数[/color]
而只要opencv功能模块中的方法能通过这个路径获得图片,程序就能运行
但是现在当我将数据传递过去之后,就报错了Exception in thread ”AWT-EventQueue-0” java.lang.unsatisfiedLinkError: test_dual_dimesion.dropColor(ILjava/lang/String=)V
at test_dual_dimesion.dropColor(native method)
at test_dual_dimesion_frame.approveButtonActionPerformed(test_dual_dimesion_frame.java:69)
.....
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
......其中java程序的主类是test_dual_dimesion,被声明为native的方法是dropColor(即dll中的方法)
窗体类是test_dual_dimesion_frame
错误的第一行,应该是说字符串的处理出现了问题吧?
后面的是给一个按钮添加了approveButtonActionPerformed方法来触发dll中的dropColor方法
Unknown Source应该是说明出现了空指针吧?
我觉得就是这个路径参数没有正确传递到dll中导致的错误
不知道我分析的对不对有哪位大侠能帮忙解决一下这个问题?
小弟在此感激不尽