java里调用C的接口,以前只是了解java里有个native,调用本地类,做了个例子,具体方法就是利用java中的JNI(java native interface),创建一个java类,在这个类中声明要用到的C中的函数,不必在此将其实现,格式 public native int getFun();然后把他放到C盘的根目录下(这样主要是为了在CMD中好编译),然后用javac Test将其编译成class,再用javah Test将其打成C的.h头文件,然后建一个C的dll(Dynimic link library)工程,实现头文件中定义的那些函数,要注意,C中的函数名要和.h中要用到的函数的名子一样,将这个做好的工程build成一个DLL文件(生成的DLL文件在工程所在文件夹的DEBUG中)
我测试的时候把他放在了C盘的一个文件夹下,然后设置PATH,把这个动态连接库的上一级目录定义到PATH中(如果把.DLL也写进去会报错的),测试的时候在这个java类中写个main()函数对其行测试,在这个java类中就可以调用这些函数,就像调本类的函数一样,能将这个类中的东西进行输入输出.
创建一个OCX工程,在C++编译器中建立一个MFC..的工程(第一个MFC的,没记住后面的名子,不过开一下编译器就可以看到了),建一个Interface.h文件,把要用到的函数定义到里面去,在建好的工程中左侧的目录中的第一个类处,点击右键创建要调用的方法,这样会在XXXXXctl.cpp中的最后创建出这个方法,在XXXXXctl.cpp中调用这个函数所在的那个.DLL文件(例如BatchScan.dll),调用其中用batchScan()方法,编译成功后在这个工程所在文件夹下的release文件夹中会自动生成.OCX文件,这就是得要得到的,重要的是这其中又用到了那个.DLL文件,所以我没做出来.
我直接用就得了,把这个BatchScan.ocx文件放到了我安装的那三个本接接口的Interface文件夹中,覆盖了其中的一个相同的文件,再注册一下,第三个接口中的一个.bat的文件,我在WEB(这个.htm文件是以前他们做的一个很多按钮的东西,我用的只是在其加的一个按钮,看懂他的用法,把我用的东西移到我做好的手工录入工作站中)中就可以调用了.---20070701
我测试的时候把他放在了C盘的一个文件夹下,然后设置PATH,把这个动态连接库的上一级目录定义到PATH中(如果把.DLL也写进去会报错的),测试的时候在这个java类中写个main()函数对其行测试,在这个java类中就可以调用这些函数,就像调本类的函数一样,能将这个类中的东西进行输入输出.
创建一个OCX工程,在C++编译器中建立一个MFC..的工程(第一个MFC的,没记住后面的名子,不过开一下编译器就可以看到了),建一个Interface.h文件,把要用到的函数定义到里面去,在建好的工程中左侧的目录中的第一个类处,点击右键创建要调用的方法,这样会在XXXXXctl.cpp中的最后创建出这个方法,在XXXXXctl.cpp中调用这个函数所在的那个.DLL文件(例如BatchScan.dll),调用其中用batchScan()方法,编译成功后在这个工程所在文件夹下的release文件夹中会自动生成.OCX文件,这就是得要得到的,重要的是这其中又用到了那个.DLL文件,所以我没做出来.
我直接用就得了,把这个BatchScan.ocx文件放到了我安装的那三个本接接口的Interface文件夹中,覆盖了其中的一个相同的文件,再注册一下,第三个接口中的一个.bat的文件,我在WEB(这个.htm文件是以前他们做的一个很多按钮的东西,我用的只是在其加的一个按钮,看懂他的用法,把我用的东西移到我做好的手工录入工作站中)中就可以调用了.---20070701