2012-04-28 13 views
9

Soy nuevo en el Lenguaje de programación D y tengo un problema muy simple.Cómo vincular bibliotecas D en un programa D

Quiero compilar una biblioteca de scripts D una vez y luego usarla en mis otros proyectos de D.

En CI vinculados a los archivos .lib y creó encabezados por ellos, pero en DI no encuentras cosas por el estilo (¿hay incluso algún tipo de cabeceras en D?)

utilizo D-IDE mi IDE y DMD2 como mi compilador.

Respuesta

7

Hay .DI (interfaz D) los archivos que se pueden utilizar como cabecera de éstas puede ser generada a partir de sus fuentes con el modificador de compilador -H

sin embargo, las bibliotecas que he visto sólo tendrá los archivos de origen para importar

puede utilizar el interruptor -I para especificar dónde el compilador buscará importaciones

y el interruptor -L serán incluídos en el enlazador

11

Crear StaticLib.d:

module StaticLib; 

int func(int x) 
{ 
    return x+1; 
} 

compilarlo:

dmd -lib StaticLib.d -ofStaticLib.lib 

Crear App.d:

module App; 
import std.stdio; 
import StaticLib; 

void main(string[] args) 
{ 
    writeln("func(3) = ", StaticLib.func(3)); 
} 

Crear StaticLib.di (cabecera d):

int func(int x); 

Compilarlo:

dmd App.d StaticLib.di StaticLib.lib -ofApp.exe 
+0

[Especificación de idioma] (http://dlang.org/spec/module.html#module_declaration): > Por convención, los nombres de los paquetes y módulos son minúsculos. Esto se debe a que esos nombres pueden tener una correspondencia uno a uno con el directorio del sistema operativo y los nombres de archivo, y muchos sistemas de archivos no distinguen entre mayúsculas y minúsculas. Todos los nombres de módulos y paquetes en minúsculas minimizarán los problemas al mover proyectos entre sistemas de archivos diferentes. – sigod