嗨,我没有找到如何创建 64 位 dll 的解决方案。并使用它的本机 c++ 方法。我使用 Java 代码 metodynatywne.java :
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;
}
我使用 gcc 使用命令创建我的 dll:
c:\>c++ -I c:\java7\include -I c:\java7\include\win32 -c metodynatywne.cpp
和
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 x64 编译器,这两个方法都给了我同样的错误。我该如何处理?如果是,请使用另一个 c++ 编译器如何强制此编译器创建可供我的 java dll 文件使用的。我在 Windows 7 64 位上工作。
如何从 cpp 文件制作 64 位 dll(使用 gcc)?还是其他命令行编译器?
非常感谢您提供的任何评论和帮助。