100分求助java调用c++的程序,总报错!(急~)
其实我已经按照网上很多文章的写法写了代码,但总是编译报错!代码如下
GetIdealFaxAction.java:
package cn.wh.company.fax;
public class GetIdealFaxAction {
static {
System.loadLibrary( "idealfax ");//这个idealfax.dll文件存放在C:\j2sdk1.4.2_11\bin下面,并在path里面写上了C:\j2sdk1.4.2_11\bin;
}
public native static boolean Init();
public native static int Channel();
public native static boolean Send(String number,String file);
}
调用这个程序的代码:
package cn.wh.company.fax;
import cn.wh.company.common.web.BaseAction;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestAction extends BaseAction {
public ActionForward execute2(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
GetIdealFaxAction getfax = new GetIdealFaxAction();//走到这一步就开始报错了,就算不用这一句,直接用GetIdealFaxAction.init();也报错!
return mapping.findForward( "fax ");
}
}
程序走到GetIdealFaxAction getfax = new GetIdealFaxAction()就开始报错了,就算不用这一句,直接用GetIdealFaxAction.init();也报错!不知道怎么调用c里面的init()这个函数,快郁闷死了,C++生成的dll文件应该没有什么问题,编译都通过!(idealfax.dll文件在这个java目录下面也都放了)
我用debug查看的错误信息是
UnsatisfiedLinkError,不知道什么原因!
高手解决下啊,这是本周的工作任务,一完成马上结贴送分!
------解决方案--------------------UnsatisfiedLinkError是指load你这个dll的时候出错了,这个ERROR后面应该跟着一些message表明什么错的,贴出来看看
------解决方案--------------------将你的错误信息贴出来看看。
如果你的web程序需要调用动态;我建议你做好先写一个java类测试一下。
首先你得保证idealfax.dll没有问题;你可以写一个C++测试程序调用idealfax.dll这个dll如果测试没有问题,则说明idealfax.dll没有错误。
//请把idealfax.dll放到resin,或者java.libpath目录下。只要jvm系统可以找到对应的idealfax.dll就可以了。
//linux版 把idealfax.so,libstdc++.so.5放到%JAVA_HOME%/jre/lib/i386下就可以了。
一般做法;如果你的web工程放在resin下运行就把idealfax动态库放在resin根目录下;
如果放在tomcat下运行就放到%TOMCAT_HOME%/bin目录下。
如果你是使用eclipse写一个java测试程序来测试的话;可以把idealfax动态库放到eclipse根目录下。