Frage

..., folgen bis dieses .

Aus den Antworten, die ich habe auf meine referenzierten Frage gegeben worden Ich habe gelernt, dass:

  • verschiedene Compiler verwenden unterschiedliche Namen Dekoration, die es unmöglich, zu verwenden, um eine C ++ dynamische Bibliothek mit Compiler A in einem Projekt gebaut mit Compiler B,
  • gebaut macht
  • kann die Bibliothek als statisch gebaut werden Speichern mir einschließlich n-Header und Quelldateien im Projekt oder Exportieren von Symbolen. (Es wird nach wie vor nicht die Bibliothek für die Verwendung mit einem anderen Compiler speichert Wiederaufbau).

einen genaueren Blick auf SDL im Licht des Habens, was gesagt wurde, ich habe erkannt, dass seine Verknüpfung zwei Schichten hat: in meinem SDL-Projekt, ich verknüpfen statisch gegen libSDL.a, das wird, die wiederum Link dynamisch gegen SDL.dll, wodurch elminating die Notwendigkeit für verschiedene DLL-Versionen für verschiedene Compiler.

Die Frage ist, ob dies wirklich der Fall ist und eine tragfähige Lösung für das Problem, oder bin ich etwas fehlt (und was)?

War es hilfreich?

Lösung

Ich denke, Ihr Ansatz richtig ist. Ich würde es so sagen:

  • für eine DLL von verschiedenen Compilern verwendbar zu sein, ist es nur C-Funktionen enthalten muss (sie kompiliert werden kann, eine C ++ Compiler extern C verwenden)
  • Wie üblich bei DLLs kann eine statische Import-Bibliothek verwendet werden, so dass Funktionen in der DLL direkt aufgerufen werden können, anstatt benötigen namentlich geladen werden
  • Anstelle einer regulären Import-Bibliothek, könnten Sie eine Wrapper-Bibliothek, die die DLL-C-Funktionen in C ++ Klassen und Funktionen
  • Wraps
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top