Не удается вызвать в 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);
}
}
что я делаю не так
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