Wie wird eine lib erstellt mit z88dk ?

  • Ich versuche 1 Lib zu erstellen mit 2 Routinen. Die Lib werden Sauber kompiliert, es kommt keine Fehlermeldung.
    Wenn ich meine Testdatei dann Compilieren möchte mit der Lib, wird keine "bin" und keine "cpc" erstellt.


    Hier mal mein Democode:


    Datei : some1.c

    Code
    void __LIB__  test_initialization1()
    {
    // test code
    }


    Datei : some2.c

    Code
    void __LIB__  test_initialization2()
    {
    // test code
    }


    Werden hiermit compiliert :
    zcc +cpc -vn -make-lib -Wn43 some1.c
    zcc +cpc -vn -make-lib -Wn43 some2.c


    Es entsteht some1.o und some2.o


    Datei : some.lst

    Code
    some1
    some2


    Diese wird so compiliert:
    z80asm -d -ns -nm -Mo -xsome.lib @some.lst


    Es ensteht eine some.lib.


    Dann habe ich noch die h :

    Code
    #ifndef _MYHEADER
    #define _MYHEADER
    extern void __LIB__ test_initialization1();
    extern void __LIB__ test_initialization2();
    #endif


    Die some.lib kommt in den Ordner "clibs" und die some.h kommt in den Ordner "include"


    Das ist die Testdatei: test.c


    Die wird so aufgerufen :
    d:\z88dk\bin\zcc +cpc -create-app -O3 -o test.bin test.c -lcpcrslib -lndos


    Es wird nur eine def erstellt mit diesem Inhalt, also keine Fehlermeldung :

    Quote


    IF !DEFINED_ANSIstdio
    defc DEFINED_ANSIstdio = 1
    ENDIF


    DEFINE DEFINED_myzorg
    defc myzorg = 16384


    Die cpc-datei und bin-Datei wird nicht erstellt.


    Wo liegt der Fehler.


    mfg

  • Eigentlich hast du die Erstellung der LIB Datei richtig gemacht. Gibt denn der C-Compiler denn sonst noch irgendwelche Fehlermeldungen aus?
    Ansonsten wuerde ich beim Kompilieren des Beispielprogramms auch noch "-lsome" anhaengen, damit deine neu erstelle Bibliothek auch verwendet wird.


    Kleine, allgemeine Info nebenbei: Bibliotheken sind bei Z88dk ganz praktisch, da nicht die vollstaendige Bibliothek eingebunden wird, sondern nur die verwendeten Methoden, daher macht es auch Sinn, intensiv die Bibliotheken von Z88dk zu verwenden, da diese meist in Assembler geschrieben sind und entsprechend weniger Speicher benoetigen bzw. besser optimiert sind.

  • Habe die Fehlermeldung jetzt mal abgefangen (Testdatei heisst jetzt : sometest.c):


    Module "SOMETEST", Symbol not defined
    Error in expression TEST_INITIALIZAZION1


    Module "SOMETEST", Symbol not defined
    Error in expression TEST_INITIALIZAZION2

    mfg

  • Habe jetzt eine eigene Lib erstellt, für eine einfache Grafik.
    Bin folgendermassen vorgegangen:


    1. z88dk installiert auf Laufwerk d:


    2. die cpcrslib 2.0 runtergeladen und in z88dk eingebunden:
    - cpcrslib.lib nach d:\z88dk\lib\clibs
    - cpcrslib.h nach d:\z88dk\include
    Damit kann man nun eine Printausgabe auf dem CPC-Screen darstellen.


    3. 6 Asm-Dateien angelegt :
    cpc_draw_a.asm
    cpc_draw_r.asm
    cpc_move_a.asm
    cpc_move_r.asm
    cpc_plot_a.asm
    cpc_plot_r.asm


    ASM-datein befinden sich im Anhang.


    4. eine Datei "cpcgraflib.h" angefertigt:
    #define _CPCGRAFLIB_H
    extern void __LIB__ cpc_draw_a(int x, int y);
    extern void __LIB__ cpc_draw_r(int x, int y);
    extern void __LIB__ cpc_plot_a(int x, int y);
    extern void __LIB__ cpc_plot_r(int x, int y);
    extern void __LIB__ cpc_move_a(int x, int y);
    extern void __LIB__ cpc_move_r(int x, int y);


    5. eine Datei "cpcgraflib.lst" angefertigt:
    cpc_draw_a
    cpc_draw_r
    cpc_plot_a
    cpc_plot_r
    cpc_move_a
    cpc_move_r


    6. dann die Lib erstellt (der Assembler liest die Dateien aus der "lst") und
    in die Verzeichnisse kopiert :

    z80asm -v -xcpcgraflib.lib @cpcgraflib.lst
    copy cpcgraflib.lib d:\z88dk\lib\clibs
    copy cpcgraflib.h d:\z88dk\include


    7. dann eine "test.c" angefertigt:


    und so compiliert :


    d:\z88dk\bin\zcc +cpc -create-app -make-app -O3 -o test.bin test.c -lcpcrslib -lcpcgraflib -lndos


    Nun kann man die "bin" oder "cpc" einlesen ab Adresse "0x4000"


    vorher "memory &3fff" den Basicspeicher runtersetzen.


    Das wars.


    mfg

  • Hallo, danke für dein Angebot.


    Die Lib's in "C" bekomme ich nicht zum laufen, wie am Anfang.


    Die ASM-Lib's funktionieren komischerweise.


    Vielleicht schaffts du da mal ein kleines Beispiel?


    mfg