Nick Heiner Nick Heiner - 21 days ago 8
Java Question

Can't load IA 32-bit .dll on a AMD 64-bit platform

I am trying to use SVMLight from Java, using the JNI wrapper on this page:

static {
System.loadLibrary("lib/JNI_SVM-light-6.01/lib/svmlight");
}


I get the following error:


... lib\JNI_SVM-light-6.01\lib\svmlight.dll: Can't load IA 32-bit .dll
on a AMD 64-bit platform


Can I solve this by recompiling the .dll for 64 bit? How would I go about doing this? Is there some other workaround I can use? SVMLight makes the C source code available.

Answer

Yes, you'll have to recompile the DLL for 64-bit. Your only other option is to switch to a 32-bit JVM, or otherwise get some 32-bit process to load the DLL on your behalf and communicate with that process somehow.