您好我沒有找到解決方案如何創建64位dll。並使用它的本地C++方法。我用Java代碼metodynatywne.java:如何生成64位.dll哪個gcc編譯器或其他。無法在AMD 64位平臺上加載IA 32位.dll
class metodynatywne {
static {
System.loadLibrary("metodynatywne");
}
native public void sayHello();
public static void main (String argv[])
{
new metodynatywne().sayHello();
} }
使用 JAVAH -jni metodynatywne
然後產生metodynatywne.h我寫metodynatywne.cpp代碼:
#include <jni.h>
#include <iostream>
#include "metodynatywne.h"
using namespace std;
JNIEXPORT void JNICALL
Java_metodynatywne_sayHello(JNIEnv * env, jobject self)
{
cout << "Hello World!" << endl;
}
我ussed GCC創建我dll with comands:
c:\>c++ -I c:\java7\include -I c:\java7\include\win32 -c metodynatywne.cpp
and
c:\>c++ -shared metodynatywne.o -o metodynatywne.dll
,什麼什麼,我得到的是錯誤信息:
c:\>java metodynatywne
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Programowanie\UJ\Semestr2\ZPG\PerfCount\cwiczenie\metodynatywne.dll: Can't lo
ad IA 32-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(Unknown Source)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at metodynatywne.<clinit>(metodynatywne.java:4)
我用Java 1.4的32位javac編譯器和java7 64的編譯器都metods給了我同樣的錯誤。我該如何處理?如果是的話,使用另一個C++編譯器如何強制這個編譯器創建可用的我的Java dll文件。我在Windows 7 64位工作。
我可以從cpp文件製作一個64位的dll(帶gcc)嗎?或者其他的命令行編譯器?
非常感謝您提供的任何意見和幫助。
我有同樣的問題,你碰巧找到一個解決方案? – 2013-11-06 00:03:37