JNI: la biblioteca se encuentra en la ruta, pero el método no (java.lang.UnsatisfiedLinkError)

Estoy tratando de usar JNI y obtengo java.lang.UnsatisfiedLinkError. A diferencia del otro millón de preguntas sobre esto, tengo la lib en mi camino e incluso he visto cambiar la excepción cuando la elimino. Estoy seguro de que algo está mal con el dll que he creado, pero no estoy seguro de qué.

Aquí está mi código de clase de 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);
}

Aquí está la parte resumida de mi archivo de encabezado producido por javah:

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

Aquí está mi código 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;
  }

Aquí está la excepción de tiempo de ejecución que recibo de 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)

Leí que la excepción anterior significa que ENCONTRÓ la biblioteca "lala", pero que el método "agregar" todavía no está definido. Las únicas cosas que veo diferentes entre mi proyecto y el tutorial son:

Mine usa un paquete, en lugar del paquete predeterminado (¿no deberían los tutoriales realmente hacer esto? ¡Vamos! ¡Vamos a ser profesionales!)Mine tiene un valor de retorno. Moví mi dll después de que se creó (no creo que esto lo rompa ya que mi ruta está configurada).

¿Cómo es esto posible

Otra información

OS: Windows 7
JDK: 1.6.0_31 (para x86, jvm de 32 bits)
C ++ IDE: Code :: Blocks (el dll fue compilado automáticamente por Code :: Blocks IDE)
Compilador C ++: MinGW32-g ++ (el compilador GNU C ++)

Tengo jni.h y com_Tune.h en C: \ _ \ include
Tengo lala.dll en C: \ _ \ lib

Variables de entorno
PATH: C: \ Archivos de programa (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: \ Archivos de programa (x86) \ ATI Technologies \ ATI.ACE \ Core-Static; C: \ Apps;% JAVA_HOME% \ bin; C: \ Archivos de programa \ MySQL \ MySQL Server 5.5 \ bin;% MAVEN_HOME% \ bin;% HADOOP_INSTALL% \ bin; c : \ Archivos de programa (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \; c: \ Archivos de programa \ Microsoft SQL Server \ 100 \ Tools \ Binn \; c: \ Archivos de programa \ Microsoft SQL Server \ 100 \ DTS \ Binn \; C: \ MinGW \ bin; C: \ Archivos de programa (x86) \ GnuWin32 \ bin; C: _ \ path; C: \ _ \ lib; C: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin; C: \ _ \ include

Respuestas a la pregunta(10)

Su respuesta a la pregunta