日期:2014-05-18  浏览次数:20690 次

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根目录下。