Frage

Ich möchte eine Bibliothek schreiben, die dynamisch aus anderen Programmen verknüpft werden auf modernen Betriebssystemen wie Windows, Linux und OS / X (das heißt, es wird als .dll oder .so Modul eingesetzt werden).

Was ist die am besten geeignete Sprache in diesem Fall? Soll ich bleibe mit einfachem C? Oder ist C ++ auch ok?

War es hilfreich?

Lösung

Sie können entweder C oder C ++ für die Umsetzung verwenden, aber ich würde die Schnittstelle in reinem C zu definieren empfiehlt Es wird viel einfacher zu integrieren.

Andere Tipps

Die Schwierigkeit, eine C ++ Bibliothek mit dem Erstellen von in binärer Form verteilt ist, dass Ihre Kunden - die Nutzer der Bibliothek - sind in der Regel die gleichen C ++ Compiler zu verwenden, beschränkt, wie Sie die Bibliothek erstellt. Dies kann problematisch sein, wenn Sie auf dem Laufenden halten wollen und sie es nicht tun, oder wenn sie auf dem Laufenden halten wollen, und Sie dies nicht tun. Wenn Sie in Quelle befassen, ist dies weniger ein Problem, solange Ihr C ++ tragbar genug ist, damit es von allen Compilern Ihre Kunden verwendet werden.

Wenn der Code kann von C verwendet wird, würde ich wahrscheinlich Code auf eine C-Schnittstelle. Alternativ bieten zwei Schnittstellen - die native C ++ Schnittstelle und eine C-Schnittstelle. Aber das ist mehr Arbeit als nur eine C-Schnittstelle. Auf der anderen Seite kann es profitiert von einer C ++ Schnittstelle (vielleicht mit STL Iteratoren, usw.) und das könnte beeinflussen Ihre Entscheidung sein.

Ich würde auch sagen, dass C der kleinste gemeinsame Nenner ist. Sie haben immer die Möglichkeit, einen C ++ Wrapper die Core-Bibliothek zu schreiben, wenn dies mit der rufenden Anwendung besser integriert.

Ich würde sagen, C die vorhersagbar tragbar ist, aber C ++ ist machbar.

Betrachten wir den Faktor der kleinsten gemeinsamen Nenner und machen die Verbraucher Ihrer Bibliotheken die Entscheidungen zu treffen, die für sie am besten sind. Das Konstrukt der externen c wahrscheinlich verwirrt immer noch einige Leute, und Sie möchten Ihre Bibliothek weit und erreichen die ein möglichst breites Publikum zu reisen. Auf jeden Fall macht die Schnittstellen rein c. C ++ ist in Ordnung, vorausgesetzt, Sie einige der dunkleren Ecken (wie STL) zu vermeiden. C ist die tragbare Bar keine. Erstellen von Bibliotheken für alle verfügbaren Plattformen ist keine geringe Leistung so sicher sein, einen Blick hier für einige Hinweise. Sie können auch unter Verwendung von autoconf und dergleichen zu betrachten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top