Domanda

Voglio scrivere una libreria che sarà collegata dinamicamente da altri programmi in esecuzione su moderni sistemi operativi come Windows, Linux e OS / X (cioè sarà distribuito come .dll o .so ).

Qual è la lingua più appropriata in quel caso? Dovrei attenermi alla semplice C? O va bene anche C ++?

È stato utile?

Soluzione

Puoi usare C o C ++ per l'implementazione, ma consiglierei di definire l'interfaccia in puro C. Sarà molto più facile da integrare.

Altri suggerimenti

La difficoltà con la creazione di una libreria C ++ distribuita in forma binaria è che i tuoi clienti - gli utenti della libreria - sono generalmente costretti a usare lo stesso compilatore C ++ con cui hai creato la libreria. Questo può essere problematico se vuoi tenerti aggiornato e loro no, o se vogliono tenerti aggiornato e tu no. Se gestisci i sorgenti, questo è meno un problema, purché il tuo C ++ sia abbastanza portatile da consentirne l'utilizzo da parte di tutti i compilatori utilizzati dai tuoi clienti.

Se il codice potesse essere usato da C, probabilmente codificherei un'interfaccia C. In alternativa, fornire due interfacce: l'interfaccia C ++ nativa e un'interfaccia C. Ma questo è più lavoro di una semplice interfaccia C. D'altra parte, potrebbero esserci vantaggi da un'interfaccia C ++ (forse usando iteratori STL, ecc.) E ciò potrebbe influenzare la tua decisione.

Direi anche che C è il minimo comune denominatore. Hai sempre la possibilità di scrivere un wrapper C ++ nella libreria principale se questo si integra meglio con l'applicazione chiamante.

Direi che C è il più prevedibile portatile, ma C ++ è fattibile.

Considera il fattore con il minimo comune denominatore e fai in modo che i consumatori delle tue biblioteche prendano le decisioni migliori per loro. Il costrutto di extern c probabilmente confonde ancora alcune persone e vuoi che la tua biblioteca viaggi lontano e raggiunga il pubblico più vasto. Sicuramente rendere le interfacce pure c. Il C ++ va bene purché tu eviti alcuni degli angoli più scuri (come STL). C è la barra più portatile nessuna. La creazione di librerie per tutte le piattaforme disponibili non è cosa da poco, quindi assicurati di dare un'occhiata qui per alcuni suggerimenti. Potresti anche considerare l'utilizzo di autoconf e simili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top