Cara, se você tem uma DLL e quer chamá-la via Java, você deve usar JNI. Independente de como ela foi criada.
Você pode fazer da seguinte forma:
Escreva uma classe “Wrapper” de acesso à sua dll, como por exemplo:
public class MyDllWrapper {
public native int myMethod();
}
Onde myMethod representa um dos métodos disponíveis na sua DLL, de preferência com os mesmos parâmetros ou parâmetros que você possa mapear na chamada à sua Dll.
Compile a classe gerando MyDllWrapper.class.
Compile MyDllWrapper da seguinte forma:
Note que não é javac, mas javah.
Será gerado um arquivo MyDllWrapper.h, que é o header de um arquivo C a implementar. Você deve implementar esse código C. Note que ele tem o seu método com algumas pequenas alterações.
Veja como fica a chamada do método no nosso exemplo:
JNIEXPORT jint JNICALL Java_MyDllWrapper_myMethod(JNIEnv *, jobject);
Para utilizar então a sua Dll no seu código Java, você utiliza agora a classe wrapper da forma como você a criou. Algo como:
...
System.loadLibrary("myDllSemExtensao"); // Nome da sua dll sem extensão
MyDllWrapper myDll = new MyDllWrapper();
int valor;
valor = myDll.myMethod();
...
A sua Dll deve estar em um caminho que não lembro agora. Mas se estiver no diretório corrente onde você executa seu código funciona com certeza. Se você usa windows, acho que no windowssystem ou windowssystem32, não lembro ao certo. Lembre de digitar o nome da Dll sem extensão.
Para não fazer desta resposta um tutorial completo, pois não tenho tempo para tal, você vai ter que olhar na documentação do JNI os mapeamentos entre tipos e parâmetros, como jint e para que serve JNIEnv. Mas é bem fácil.