Funktionen weitergeben



  • Hey

    Gibt es in C++ (benutze visual studio 2005) die Möglichkeit:

    selbst geschriebene Funktionen weiterzugeben, ohne das der Betroffende den Quelltext davon sieht, aber trotzdem die Funktion nutzen kann?

    Tnx



  • pack die funktion in eine dll.



  • oder pack die Funktion (*.obj) in eine lib. 😃



  • Vielleicht benutzt ja einer von euch diegleiche Entwicklungsumgebung, ich bekomm das damit einfach nicht hin.

    Die Header-datei ist erfolgreich eingebunden, bei der obj scheiterts, ich hab die einfach in den projektordner getan.... wird aber nicht erkannt.



  • Achso, eine obj Datei hab ich im Debug Ordner, lib oder dll finde ich nicht 😕



  • Um eine lib zu erstellen, musst du bei VC entweder ein neues Projekt für eine statische Bibliothek erstellen (Datei->Neu->Projekt->Win32 Konsolenanwendung->Anwendungseinstellungen->statische Bibliothek)und deine Quelldateien dort reinkopieren, oder du änderst dein bestehendes Projekt in eine statische Bibliothek (Projekt->Eigenschaften->Allgemein->Konfigurationstyp->statische Bibliothek).
    Bedenke aber, dass du eine lib nicht ausführen kannst, du benötigst also immer noch ein Testprogramm, dass auf die lib-Funktionen zugreift. Das funktioniert unter VC++
    ziemlich bequem: Neues Projekt für die Testumgebung anlegen und unter ->Projektoptionen->Verweise einen Verweis auf dein lib-Projekt hinzufügen.
    Wenn jemand deine Lib verwenden will, muss er das Verzeichnis, in dem lib- und Headerdateien liegen, zu den Linker- bzw. Include-Verzeichnissen hinzufügen, und dem Linker mitteilen, dass er deine Bibliothek mit linken soll (Projektoptionen->Linker->zusätzliche Abhängikeiten)...

    Grüße,

    Martin

    P.S. Sowas sind eigentlich Fragen, die jedes halbwegs anständige C/C++ Buch/Tutorial klärt 🙄



  • Ergänzung: für C++ Zeugs gibts es leider keinen "Binär-Standard", also für den Austausch von compiliertem Code. D.h. wenn jmd. mit GCC unter Windows entwickelt wird er mit einem .lib File vom MSVC nix anfangen können, genausowenig mit einer C++ DLL von und für MSVC.

    Allerdings definiert so ziemlich jedes OS einen solchen Standard, bloss leider meistens nur für reine C APIs. D.h. du kannst C-kompatible Funktionen aus einer DLL (Windows) oder einem SO (Linux) exportieren, und dann mit jedem Compiler unter Windows (Linux) verwenden.

    p.S.: wie die Funktionen implementiert sind ist dabei egal, wichtig ist nur was im Prototyp vorkommt.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Gibts auch eine Lösung mit obj 🙄



  • Ich würde auf jeden Fall zu einer DLL raten. Diese dann auf jeden Fall statisch gegen die CRT linken und die Funktionen nur mit "normalen" Typen exportieren (also keine Klassen, STL oder CRT-Typen!).


Anmelden zum Antworten