DLL schreiben unter C



  • könntest du mir ungefähr einen Beispiel Quellcode für Variante 1(statische lib) schreiben?

    Ich weiß jetzt wie ich eine DLL schreibe und Programm nur die statische kenn ich nicht.

    mfg.
    Stefan



  • Da gibt es nichts zu schreiben, Du bindest die Header von der dll in dein Projekt mit ein und gibst in deinem Projekteinstellungen mit an, dass er die statische Lib mitlinken soll.

    Einige IDEs erzeugen die statische Lib automatisch, wenn sie die dll erstellen, bei einigen musst Du das extra mit angeben. Bei meiner IDE (Codeblocks) gibt es in den Projekteinstellungen eine Checkbox, wo man angeben kann, ob diese mit generiert werden soll.

    Wenn Du die statische Lib mitlinkst, dann müsstest Du ohne Probleme kompilieren können. Beim Starten der exe gibt es aber eine Fehlermeldung, wenn sich die dll nicht in dem gleichen Verzeichnis befindent, wie die exe selbst.



  • Das Problem schein gelöst.Nächstes Problem

    Fehler:
    [Build Error]No rule to make target 'ang.o',needed by 'Fragenprogramm.exe'. Stop.

    Was heißt das jetzt,hab die DLL hab das Programm,sie linken aber es kommt ein Fehler.Warum? 😕

    mfg.
    Stefan



  • Was ist ang.o? Soll das das Ergebnis der DLL werden? Des Programms? Welche IDE benützt du?

    MfG SideWinder



  • Eigentlich wollte ich jetzt die dll mit dem Programm zusammen machen.
    Ich nutze Dev-cpp.Was ang.o ist weiß ich nicht.



  • Stefan311 schrieb:

    .Was ang.o ist weiß ich nicht.

    ist die kompilierte ausgabe deiner quelldatei. wenn du nichts verstellt hast müsste noch zusätzlich eine *.a rauskommen das ist deine bibilothek die du mitlinken musst. mittels -ldeinelib
    um evtl deine dll mit anderen compilern nutzen zu können kannst auch
    noch

    --output-lib deinelib.lib
    

    beim linker mit angeben.



  • Es existiert nur ein ang1.o dann existiert noch libang.a,libang.def und Makefile.win.

    Also libang.a muss ich mit verlinken.Aber wozu ist libang.def und Makefile.win?



  • Stefan311 schrieb:

    Aber wozu ist libang.def

    schau sie doch mal mit einem editor.
    steht zb: die exporttabelle drin

    Stefan311 schrieb:

    und Makefile.win?

    mingw braucht einige regeln um dein projekt zu kompilieren diese stehen hier drin.

    doku zu deinem compiler
    http://www.mingw.org/docs.shtml



  • Ich hab Dev-cpp.
    Ich glaube ich weiß was mein Fehler ist.Ergebnisse sage ich später.



  • Also das wars leider nicht.Problem 1.Der Compiler bennent dieses ango immer nach dem Projekt nicht nach Quelldatei.

    2.Ich hab libang.a mitgelinkt.
    3. Ich weiß nicht was ich falsch mache? 😞 😕



  • Dieses Beispiel in der Hilfe ist das eine eine Header und das andere eine art programm?
    Wenn ja ergibt beides zusammen erst die DLL.
    Ein einfaches Ja oder Nein eicht schon.



  • Stefan311 schrieb:

    1.Der Compiler bennent dieses ango immer nach dem Projekt nicht nach Quelldatei.

    und 😕

    Stefan311 schrieb:

    2.Ich hab libang.a mitgelinkt.

    und 😕

    Stefan311 schrieb:

    3. Ich weiß nicht was ich falsch mache? 😞 😕

    ich auch nicht 😕

    Stefan311 schrieb:

    Ich hab Dev-cpp.

    weis ich und 😕

    Stefan311 schrieb:

    Ich glaube ich weiß was mein Fehler ist.Ergebnisse sage ich später.

    wo sind sie 😕

    bei welchem stand bist du den jetzt? was passiert bzw. nicht?
    versuch doch mal ganz genau zu beschreiben was los ist.



  • Also mit der ang.o klappt jetzt kommt nur noch die meldung Error1.
    Ich musste nur das Buildcomando änder.
    Jetzt guck ich was der nächste Fehler ist Error1.
    Es ist irgendwas im Makefile.win.

    Aber danke bin Jetzt weiter gekommen. 🙂

    Wer weiß ohne dies Forum könnte ich warscheinlich immer noch nur Ein wenig Textausgeben.

    mfg.
    Stefan



  • kopiere mal das compilerlog hier rein



  • Hier der log:
    Compiler: DLL Compiler
    Building Makefile: "C:\Dokumente und Einstellungen\Stefan\Desktop\C Projekte\Fragenprogramm\Makefile.win"
    Führt make... aus
    make.exe -f "C:\Dokumente und Einstellungen\Stefan\Desktop\C Projekte\Fragenprogramm\Makefile.win" all
    gcc.exe -D__DEBUG__ -o ang.o -I"C:/Dev-Cpp/include" -g3

    gcc.exe: no input files

    make.exe: *** [ang.o] Error 1

    Ausführung beendet



  • hast du zufällig die ang.c(pp) aus deinem projekt entfernt?
    hast du mal alles neu erstellt (strg+f11)?



  • Also um erlich zu sein ich hatte sie nie drinne muss ich die etwa bei Projekt datei einfügen.



  • Stefan311 schrieb:

    Also um erlich zu sein ich hatte sie nie drinne muss ich die etwa bei Projekt datei einfügen.

    wenn sie zum quellcode der dll gehört dann ja.



  • Achso dann hab ich sie.



  • Warte unter Projekt hab ich meine Dll und Fragenprogramm.c.
    Wieso Ich geb dem Compiler die regeln zum erstellen dieses ang.o.
    Und jetzt sagt er ang.c existiert nicht.Muß die im geleichen ordner sein?


Anmelden zum Antworten