Poderse siempre se puede.
Las pregunta debería ser: Qué sabes de ensamblador (si está compilado a código nativo) o que sabes de CIL (si está en bytecode).
A menudo la razón por la que una librería de una versión no funciona con otra, suele ser debido al paso de parámetros y retorno de llamadas, es lo que se llama "calling convention", y básicamente es un acuerdo, para que desde donde se llama deba saber donde depositar los parámetros y que registros deben contener la dirección de llamada y de retorno, cuando finalice la llamada. En general se recurre a usar la pila, pero incluso así, el orden de introducir los datos y qué se introduce, cómo y quién libera la pila (si el llamante a la devolución o el llamado) puede variar...
En resumen si un entorno opera en un modelo y una librería funciona en otro, directamente no puede ser operado, y por tanto la librería no puede ser usada...
Para más detalles mira por ejemplo:
https://en.wikipedia.org/wiki/X86_calling_conventions