JNI: библиотека найдена по пути, а метод - нет (java.lang.UnsatisfiedLinkError)

Я пытаюсь использовать JNI и получаю java.lang.UnsatisfiedLinkError. В отличие от других миллионов вопросов, задаваемых по этому поводу, у меня есть библиотека на моем пути, и я даже видел, как исключение изменилось, когда я удаляю его. Я уверен, что что-то не так с 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);
}

Вот сокращенная часть моего созданного javah заголовочного файла:

/*
 * Class:     com_Tune
 * Method:    add
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_Tune_add
  (JNIEnv *, jobject, jint, jint);

Вот мой код на 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;
  }

Вот исключение времени выполнения, которое я получаю из затмения:

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)

Я прочитал, что вышеупомянутое исключение означает, что он нашел библиотеку "lala", но метод "add" все еще не определен. Единственное, что я вижу по-разному в своем проекте и в учебнике:

Мой использует пакет, а не пакет по умолчанию (разве учебники не должны делать это?!?! Давай давай станем профессиональными)У меня есть возвращаемое значение.Я переместил свою DLL после того, как он был создан (я не думаю, что это сломает его, так как мой путь настроен.)

Как это возможно?

Другая информация:

ОС: Windows 7
JDK: 1.6.0_31 (для x86, 32-битная jvm)
C ++ IDE: Code :: Blocks (dll была автоматически скомпилирована IDE Code :: Blocks)
Компилятор C ++: MinGW32-g ++ (компилятор GNU C ++)

У меня есть jni.h и com_Tune.h в C: \ _ \ include
У меня есть lala.dll в C: \ _ \ lib

Переменные среды:
ПУТЬ: C: \ Program Files (x86) \ NVIDIA Corporation \ PhysX \ Common;% CommonProgramFiles% \ Microsoft Shared \ Windows Live; C: \ Program Files (x86) \ AMD APP \ bin \ x86_64; C: \ Program Files ( 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 \ Bin; C: \ _ \ включают

Ответы на вопрос(4)

Ваш ответ на вопрос