可以。用JNI(Java Native Interface).

解决方案 »

  1.   

    package app1;
    class ShowMsgBox{
    public static void main(String[] args) {
    ShowMsgBox app = new ShowMsgBox();
    app.ShowMessage("Generated with JNI");
      }
      private native void ShowMessage(String msg);  //declare native method
      static{
       System.loadLibrary("MsgImpl");
      }
    }
    之后:javac ShowMessage.java;javah -jni app1.ShowMessage(生成app1_ShowMsgBox.h)最后实现dll:#include <windows.h>
    #include "app1_ShowMsgBox.h"BOOL APIENTRY DllMain(HANDLE hModule,
    DWORD dwReason, void** lpReserved) {
    return TRUE;
    }
    JNIEXPORT void JNICALL
    Java_ShowMsgBox_ShowMessage(JNIEnv * jEnv,
    jobject this, jstring jMsg) {
    const char * msg;msg = (*jEnv)->GetStringUTFChars(jEnv, jMsg,0);MessageBox(HWND_DESKTOP, msg,"Thinking in Java: JNI",MB_OK |MB_ICONEXCLAMATION);(*jEnv)->ReleaseStringUTFChars(jEnv, jMsg,msg);
    }(摘自thinking in java)
      

  2.   

    要严格遵守命名规则,详情可参见thinking in java