import java.lang.System;/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */public class testEonEmfPic {
  public testEonEmfPic() {
    short width = 50;
    short height = 50;    this.generateemf(width, height, "readonlye_19.wmf", "gogo");  }  public native static void generateemf(short iWidth, short iHeight,
                                         String sFileName, String sErrorText)
  {
    try
    {
    System.loadLibrary("EonEmfPic.dll");
    }catch(exception e);
  }}

解决方案 »

  1.   

    我现在用corba,java----corba-----c++的通信模式以项目应用为目的,不必一下就想通吃,其余作了解。
      

  2.   

    kypfos(今天,我革谁的命?) ,你好
    请问可以具体点吗?最好有简单明了的例子发来看看,那就好。
      

  3.   

    http://www-900.ibm.com/developerWorks/cn/java/jnimthds/index.shtml
      

  4.   

    arosmith(青鸟),
    很好,有没有更多这方面的资料呢?
      

  5.   

    为实现JNI固有方法,最简单的方法就是在一个Java类里编写固有方法的原型,编译那个类,再通过javah运行.class文件。但假若我们已有一个大型的、早已存在的代码库,而且想从Java里调用它们,此时又该如何是好呢?不可将DLL中的所有函数更名,使其符合JNI命名规则,这种方案是不可行的。最好的方法是在原来的代码库“外面”写一个封装DLL。Java代码会调用新DLL里的函数,后者再调用原始的DLL函数。这个方法并非仅仅是一种解决方案;大多数情况下,我们甚至必须这样做,因为必须面向对象引用调用JNI函数,否则无法使用它们。上面是《Thinking in Java》里的原话
    我给你一个我用jni方法写的dll例子,里面调用了windows的API
    我不太懂C++,程序可能有些问题,大概就是这个样子。[程序清单JCD.cpp]
    #include <jni.h>
    #include "JCD.h"
    #include <stdio.h>
    #include <windows.h>
    /*
    displayHelloWorld方法实现调用win32的函数库kernel32.dll中的方法GetWindowsDirectoryA
    返回一个系统路径的字串到java的本地方法
    com_userbean_jcd是java程序的包名
    */
    JNIEXPORT jstring JNICALL
    Java_com_userbean_jcd_JCD_displayHelloWorld(JNIEnv* env,jclass cls)
    {
    typedef long ( *PFNGETCLASSMETHOD)(char stri[],long b);
    //声明DLL函数指针,定义函数类型
    jstring str;
    jstring args;
    char st[30];
    int i=1;
    jsize length;  
    HINSTANCE hLibrary;
    PFNGETCLASSMETHOD pfnGetClassMethod=NULL;
    long shuchu=NULL;
    hLibrary=LoadLibrary("kernel32.dll");//调用win32的动态链接库
    pfnGetClassMethod=( PFNGETCLASSMETHOD)
    GetProcAddress(hLibrary,"GetWindowsDirectoryA");
    //获得dll函数GetWindowsDirectoryA的地址
    shuchu= (pfnGetClassMethod)(st,30);
    FreeLibrary(hLibrary);
    args =env->NewStringUTF(st);//把C 字符串转化成java的String型
    return args;
    }