msk*_*app 6 c++ java java-native-interface codeblocks unsatisfiedlinkerror
我正在尝试使用JNI并获取java.lang.UnsatisfiedLinkError.与其他关于此问题的其他百万问题不同,我在我的路径上有lib,甚至在我删除它时看到异常更改.我确定我创建的DLL有问题,但我不确定是什么.
这是我的java类代码:
package com;
public class Tune {
static {
System.loadLibrary("lala");
}
public static void main(String[] args) {
Tune j = new Tune();
System.out.println("2+6="+j.add(2, 6));
}
native public int add(int x,int y);
}
Run Code Online (Sandbox Code Playgroud)
这是我的javah生成的头文件的删节部分:
/*
* Class: com_Tune
* Method: add
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_com_Tune_add
(JNIEnv *, jobject, jint, jint);
Run Code Online (Sandbox Code Playgroud)
这是我的c ++代码:
#include <jni.h>
#include <com_Tune.h>
JNIEXPORT jint JNICALL Java_com_Tune_add
(JNIEnv * env, jobject obj, jint x, jint y) {
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
这是我从eclipse获得的运行时异常:
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.Tune.add(II)I
at com.Tune.add(Native Method)
at com.Tune.main(Tune.java:9)
Run Code Online (Sandbox Code Playgroud)
我读到上面的异常意味着它DID找到了库"lala",但是仍然没有定义"add"方法.我在项目和教程中看到的唯一不同之处是:
这怎么可能?
操作系统:Windows 7
JDK:1.6.0_31(对于x86,32位jvm)
C++ IDE:Code :: Blocks(dll由Code :: Blocks IDE自动
编译)C++编译器:MinGW32-g ++(GNU C++编译器)
我在C:\ _\_ include中有jni.h和com_Tune.h
我在C:\ _\_\lib中有lala.dll
环境变量:
路径:C:\ Program Files(x86)\ NVIDIA Corporation\PhysX\Common;%CommonProgramFiles%\ Microsoft Shared\Windows Live; C:\ Program Files(x86)\ AMD APP\bin\x86_64; C:\程序文件(x86)\ AMD APP\bin\x86;%SystemRoot%\ system32;%SystemRoot%;%SystemRoot%\ System32\Wbem;%SYSTEMROOT%\ System32\WindowsPowerShell\v1.0 \; C:\ Program Files( x86)\ ATI Technologies\ATI.ACE\Core-Static; C:\ Apps;%JAVA_HOME%\ bin; C:\ Program Files\MySQL\MySQL Server 5.5\bin;%MAVEN_HOME%\ bin;%HADOOP_INSTALL%\ bin ; c:\ Program Files(x86)\ Microsoft SQL Server\100\Tools\Binn \; c:\ Program Files\Microsoft SQL Server\100\Tools\Binn \; c:\ Program Files\Microsoft SQL Server\100\DTS\Binn \; C:\ MinGW\bin; C:\ Program Files(x86)\ GnuWin32\bin; C:_\path; C:\ _\_ lib; C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\VC \仓; C:\ _ \包括