JAVA: native MessageBox() from c:WindowsSystem32user32.dll

Не удается вызвать в Java:
package nat;
import java.lang.System;
class HelloWorld
{
public static native void MessageBox(int h, String m, String c, int type);

   public static void main(String args[]) {
HelloWorld.MessageBox(0, "Text", "Message Box", 0);

    }
   static {
       System.load("c:\Windows\System32\user32.dll");
   }
}

хотя в С# все работает:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
   class ExternTest
   {
       [DllImport("User32.dll", CharSet=CharSet.Unicode)]
       public static extern int MessageBox(int h, string m, string c, int type);

       static int Main()
       {
           return MessageBox(0, "Text", "My Message Box", 0);
       }

   }

что я делаю не так  

1 комментарий

  • 2 nzhelyakov
    ну собственно не удивительно, поскольку
    описание MessageBox в dll, чтобы ява его подхватила — должно выглядеть примерно так:

    JNIEXPORT void JNICALL Java_полноеимякласса_HelloWorld_MessageBox(JNIEnv* env, jobject thiz, jint h, jstring m, jstring c, jint type)

    курите JNI в общем.JNI — Java Native Interface