Hola FryGuy!
¿Has probado cambiar la forma de manejar los parámetros en la librería?
Si ya lo has intentado, entonces ignora todo lo que voy a escribir, si no tal vez esto te pueda servir.
Posiblemente el problema radica en la forma de manejar los parámetros, algunos lenguajes tiene la convención de acumular los parámetros en la pila de izquierda a derecha y otros de derecha a izquierda.
Cuando creas una función o procedimiento puedes especificar que convención deseas emplear de la siguiente manera:
Código Delphi
[-]
function MyFunction(X, Y: Real): Real; stdcall;export;
...
En Delphi la convención por default es
register que es izquierda-derecha al igual que la convención
pascal.
Para otros lenguajes como 'C' se deben utilizan las convenciones
cdecl,
stdcall y
safecall que son derecha-izquierda.
La API de Windows utiliza las convenciones
stdcall y
safecall.
Podrías intentar con otras convenciones solo para descartar posibilidades y encontrar el error.
Espero que te sea útil