Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 33 809 117

  • Nb. de membres 193
  • Nb. d'articles 1 329
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  Création-Développement »» Y-a-t'il possibilité de faire une library système en C sur Os4

Y-a-t'il possibilité de faire une library système en C sur Os4

3 Modérateur(s)
K-LElwoodcorto
thellier thelliericon_post
Au niveau d' idltool c'est bête comme chou il faut procéder ainsi je me répéte

créer à la main ces 3 fichiers :
* toto/toto.h qui décrit les structures,types,constantes utilisées dans toto
* clib/toto_protos.h
* toto.sfd qui permet de créer un toto.xml avec l'outil fdtrans

Avec le toto.xml et le clib/toto_protos.h qui définissent totalement nos fonctions on peut alors créer tout les include du SDK avec l'outil idltool y compris les glue functions

Au niveau de l'option idltool à prendre c'est un truc comme -all ou qque chose comme ça qui génére tout les fichiers

Alain
Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig
zzd10h zzd10hicon_post
@Sharynn

Pour info, dans le n? actuel d'AmigaFuture, le 115, il y a un article/workshop sur la création de library sur os4 qui décrit l'utilisation de idltool.
Ce ne sont peut être que les fonctions basiques que tu connais déjà néanmoins.
thellier thelliericon_post
Vérifie bien que tout est cohérent : que les fonctions de l'interface et des functions-glues sont bien avec *self et les fonctions C normales sont bien décrites partout pareil y compris dans les includes genre clib/

Alain
Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig
Sharynn Sharynnicon_post
Super ...

Merci....

J'ai remis en forme avec tes spécifications et conseils...

J'avais oublié quelques trucs pour coller vraiment à tes fichiers.

Actuellement la bibliothèque ne se compile pas avec comme erreur en retour:
....
LIB_init.o: In function `LibCom1':
LIB_init.c:(.text+0x414): undefined reference to `Com1'
LIB_init.o: In function `LibCom2':
LIB_init.c:(.text+0x460): undefined reference to `Com2'
.....

Si tu as une idée, je suis preneur... Surement un soucis d'include...

Citation du matin:
Youpiii.. sur le chemin de la Bibliothèque, toutes erreurs en hypothèque !!!

 
Projet AmOS4 - Retour vers l'Amos sous OS4...

SAM440EP - A1200 3.1 de base
thellier thelliericon_post
Déjà y a un problème là dans Sharynn_functions_glue_ppc.h

#include >clib/sharynn_protos.h> /* définitions de tes fonctions C */

LONG VARARGS68K LibCom1(void *Self, LONG n1,LONG n2) {return(Com1(n1,n2)); }
LONG VARARGS68K LibCom2(void *Self, LONG n1,LONG n2) {return(Com2(n1,n2)); }

STATIC CONST APTR main_vectors[] =
{
LibObtain,
LibRelease,
NULL,
NULL,

LibCom1,
LibCom2,

(APTR)-1
};

Ensuite dans LIB_init.c c'est Sharynn_functions_glue_ppc.h qu'il faut inclure et non pas #include "sharynn_vectors.c"
En fait il faut effacer sharynn_vectors.c

Le but des glue functions c'est
Sous OS3 à partir d'une fonction avec les paramétres dans les registres aller vers ta fonction C standard
Sous OS4 à partir d'une fonction avec en plus le paramétres "self" aller vers ta fonction C standard

Ainsi dans ta source principale tu as juste des fonctions C standards

Library -> gluefunction -> ta fonction


Alain
Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig

Message édité par : thellier / 23-06-2015 16:30
Message édité par : thellier / 23-06-2015 16:31
Sharynn Sharynnicon_post
Ok mais donnes-moi cette dernière en MP
Merci !!!
Projet AmOS4 - Retour vers l'Amos sous OS4...

SAM440EP - A1200 3.1 de base
thellier thelliericon_post
Envoie moi tes sfd et autres fichiers clib,etc... de ta lib par mail qu'on en finisse : je veut dire j'aurai plus vite de fait de te les corriger qu'écrire ici

Alain
Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig
thellier thelliericon_post
Atttention aussi au typage de tes donnés : il vaut mieux utiliser des UWORD/WORD/LONG/ULONG etc.. pour être sûr de leur taille en ASM que des "int"

Alain
Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig
thellier thelliericon_post
C'est déjà expliqué page 1...
Attention les include ont sauté à l'édition sur le web

dans include/clib#ifndef __CLIB_SIMPLEDT_PROTOS_H
#define __CLIB_SIMPLEDT_PROTOS_H
#include

LONG mafonction(LONG n1,LONG n2);

#endif

dans le .sfd

==n1 $n1: SimpleDT_lib.sfd,v 1.0 2012/10/12 13:30:00 noname Exp $
==base _SimpleDTBase
==basetype struct Library *
==libname SimpleDT.library
==bias 30
==public
==include

LONG mafonction(LONG n1,LONG n2) (d0,d1)

==end

dans le function_glue_ppc.h

#include

LONG VARARGS68K Libmafonction(void *Self,LONG n1,LONG n2) {return(mafonction(n1,n2)); }

/*jump table */
STATIC CONST APTR main_vectors[] =
{
LibObtain,
LibRelease,
NULL,
NULL,

Libmafonction,

(APTR)-1
};

dans le function_glue.h (library 68k)

#include

ASM(LONG) Libmafonction(D0(LONG n1),D1(LONG n2)) {return(mafonction(n1,n2)); }

/*jump table */

static const APTR LibVectors[] ={
(APTR) LibOpen,
(APTR) LibClose,
(APTR) LibExpunge,
(APTR) LibReserved,

(APTR) Libmafonction,

(APTR) -1
};


Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig
Sharynn Sharynnicon_post
Hello All...

La bibliothèque se compile et s'ouvre avec OpenLibrary() de l'Exec...

Mais le retour d'information sur la commande TEST n'est pas correct. Surement une erruer de ma part.

La commande est:
int COM1(int n1,int n2)
{
int A=n1+n2
return (int)A
}


Si je donne =COM1(10,4);
Cette commande retourne un chiffre qui semble être un pointeur (>1400000).

Si je modifie comme tel:
int COM1(int n1,int n2)
{
int A=10;
int B=4;
return (int)A+B
}


Elle retournera 14..

Comment dois-je déclarer ma commande dans la bibliothèque ?. Le soucis ne peux que venir de là...
Tout part du fichier Amos4.sfd (les "includes" sont générés automatiquement..)...

....
ça avance bien pour le moment et si je trouve la manière de régler ce petit soucis, l'exécutable de la source AmOS4 en sera bien réduit !!!
j'ai bien bossé et recherché sur mes autres sources sur lesquelles j'utilisais mes commandes AMOS4 directement copiées dans la source et ....
J'ai récupéré environ 95% de mon travail sur ma bibliothèque AMOS4... COOOL !!!
....

j'attends vos réponses si possible !!!
Projet AmOS4 - Retour vers l'Amos sous OS4...

SAM440EP - A1200 3.1 de base
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme