2010-03-29 34 views
7

Pregunta: ¿Es posible compilar un programa en Linux usando un archivo .dll?Posible utilizar un .dll en Linux

Dónde va esto: Este .dll se utilizará para escribir una extensión de php a algún software propietario de un tercero.

Antecedentes e Investigación:

que se les ha dado una biblioteca llamada proprietary.lib. Tenía curiosidad, ya que nunca he visto la extensión .lib antes, por lo que he escrito:

file proprietary.lib 

La salida fue:

proprietary.lib: current ar archive 

hice algunas investigaciones y encontró que ar es más o menos tar (y de hecho, supongo que tar ha reemplazado ar en la mayoría de los entornos * nix).

Al inspeccionar la página del manual ar, vi el t option, que muestra una tabla que muestra el contenido de ese archivo. Guay. Así que escribo:

ar t proprietary.lib 

y obtener:

proprietary.dll 
proprietary.dll 
... (snip X lines) ... 
+2

UNIX no utiliza DLL. En Linux, el formato de archivo correspondiente es "así" (objetos compartidos) y en Mac OS X es "dylib" (bibliotecas dinámicas) y "paquete". – kennytm

+1

Verá, aquí es donde entra en juego la confusión. Desde la búsqueda de comp.lang.c, parece que "DLL" es un término genérico para una biblioteca, que resulta ser el nombre que Windows usa para él. ¿Es tan simple como recompilar esa biblioteca en el formato ELF? –

+0

Sí, es así de simple. Está en deuda con el proveedor de esta biblioteca para obtener una compilación adecuada. – Broam

Respuesta

4

Puede intentar extraer el archivo ar (los paquetes Debian son ar archivos, fwiw) y ejecutar file en los contenidos.

No podrá usar archivos DLL de Windows sin traducción. Los únicos archivos DLL que conozco que funcionan de forma nativa en Linux se compilan con Mono.

Si alguien le dio una biblioteca binaria patentada para codificar, debe verificar que esté compilada para la arquitectura de destino (nada como tratar de usar un ARM binario en un sistema x86) y que esté compilada para Linux.

Dicho esto ... buena suerte. Odio programar contra bibliotecas de terceros donde tengo la documentación y la fuente.

+0

Intentó extraer y volver a ejecutar el comando de archivo en el único archivo .dll que se produjo y el resultado fue" datos ". –

+0

Si no se ve como un objeto compartido o como un tipo de archivo ejecutable ... no tiene suerte. – Broam

+0

@Broam Hola, ¿es posible compilar directamente archivos dll con Mono? ¿O necesito convertir los archivos DLL en código C++ y luego compilarlo con Mono? – Lokesh

8

archivos .dll son por lo general las bibliotecas compartidas de Windows. (También es posible que alguien en Linux haya creado una biblioteca Linux normal y lo haya llamado .dll por alguna razón).

Es posible que pueda crear un enlace en contra de ellos usando Wine. El soporte para esto fue una vez allí como experimental, no sé cuál es su estado actual.

1

El desarrollo reciente puede haber cambiado la situación: Hay una función loadlibrary disponible para Linux, que permite cargar una DLL de Windows y luego llamar a funciones dentro de.

Por lo tanto, si el archivo .dll que tiene actualmente es una DLL de Windows, puede encontrar una manera de usarlo en su software.

Cuestiones relacionadas