Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Intégrer des images, sons ou videos dans des librairies partagées C

5 réponses
Avatar
Fab
Bonjour,

Etant donné qu'on peut programmer des librairies dynamiques partagées en C
sous BSD (avec gcc), peux-t-on y ajouter des fichiers multimédia directement
intégrés à l'intérieur, à l'instar de ce qu'il est possible de faire dans
une DLL sous Windows ?

Le but est d'intégrer dans un fichier lib.so des fichiers PNG ainsi que des
vidéos MPEG. Comme cela est possible avec Windows, je pense que cela ne pose
aucun problème sous BSD mais je n'ai pas trouvé d'explications sur le web.

J'ai le souvenir que sur Amiga, il y a 20 ans, il existait des outils pour
convertir une image GIF ou IFF ILBM en code source C mais cela est plutôt
lourd et d'ailleurs ne semble plus se faire.

Merci pour vos informations,

Fabrice

5 réponses

Avatar
Sylvestre Gallon
On Oct 13, 9:03 am, "Fab" wrote:
Bonjour,

Etant donné qu'on peut programmer des librairies dynamiques partagées en C
sous BSD (avec gcc), peux-t-on y ajouter des fichiers multimédia direct ement
intégrés à l'intérieur, à l'instar de ce qu'il est possible de faire dans
une DLL sous Windows ?

Le but est d'intégrer dans un fichier lib.so des fichiers PNG ainsi que des
vidéos MPEG. Comme cela est possible avec Windows, je pense que cela ne pose
aucun problème sous BSD mais je n'ai pas trouvé d'explications sur le web.

J'ai le souvenir que sur Amiga, il y a 20 ans, il existait des outils pou r
convertir une image GIF ou IFF ILBM en code source C mais cela est plut ôt
lourd et d'ailleurs ne semble plus se faire.

Merci pour vos informations,

Fabrice



Avec gimp tu peux sauvegarder une image en .c.

Cordialement,
--
Sylvestre Gallon (http://devsyl.blogspot.com)
R&D @ Rathaxes (http://www.rathaxes.org)
PMBSD Lead Developer (http://www.pmbsd.org)
Avatar
Hamiral
Fab a écrit :
Bonjour,

Etant donné qu'on peut programmer des librairies dynamiques partagé es en
C sous BSD (avec gcc), peux-t-on y ajouter des fichiers multimédia
directement intégrés à l'intérieur, à l'instar de ce qu'il es t possible
de faire dans une DLL sous Windows ?

Le but est d'intégrer dans un fichier lib.so des fichiers PNG ainsi q ue
des vidéos MPEG. Comme cela est possible avec Windows, je pense que c ela
ne pose aucun problème sous BSD mais je n'ai pas trouvé d'explicati ons
sur le web.

J'ai le souvenir que sur Amiga, il y a 20 ans, il existait des outils
pour convertir une image GIF ou IFF ILBM en code source C mais cela est
plutôt lourd et d'ailleurs ne semble plus se faire.

Merci pour vos informations,

Fabrice



Il te faut un outil, genre bin2c, qui va lire tes ressources et les
enregistrer dans un fichier .c sous la forme d'un tableau d'octets (ou
autres). Il ne reste plus qu'à compiler et lier ce fichier .c avec le
reste de ton programme.
Note que cela génère des sources très volumineux, donc rallonge
considérablement la compilation.
Il y a sûrement des outils, genre bin2obj, qui convertissent directemen t
en fichier objet, donc tu n'as plus qu'à lier, ceci te débarrasse don c
de la phase de compilation, et te permet donc de modifier tes ressources
plus souvent sans rallonger tes temps de compilation (d'où un certain
confort de développement).
Autant le bin2c tu peux le programmer toi-même, autant le bin2obj me
paraît plus ardu, en tout cas je ne vois pas trop comment faire. Mais t u
dois pouvoir en trouver qui corresponde à ta plateforme en cherchant un
peu sur le net.

Bien sûr après cela il te faut le moyen de lire et décompresser tes
ressources comme si elles venaient du filesystem, mais ça c'est une
autre histoire.

Ham
Avatar
Fab
"Sylvestre Gallon" a écrit dans le message de
news:
On Oct 13, 9:03 am, "Fab" wrote:
Bonjour,

Etant donné qu'on peut programmer des librairies dynamiques partagées en
C
sous BSD (avec gcc), peux-t-on y ajouter des fichiers multimédia
directement


>intégrés à l'intérieur, à l'instar de ce qu'il est possible de faire dans
>une DLL sous Windows ?



Avec gimp tu peux sauvegarder une image en .c.




Merci pour les différentes infos. Par contre, ume image JPEG compressée à
250 Ko se retrouve à occuper 3,5 Mo après la sortie du fichier source c sous
Gimp. Il n'y a pas moyen de conserver la compression JPEG ou PNG, quitte à
devoir utiliser une autre librairie pour la lecture plus tard ? En effet,
j'ai l'impression que l'image est sauvegardée au format RAW (sans aucune
compression).

Quant à l'outil bin2c, on trouve effectivement une collection de codes
sources à compiler sur le web, et même des scripts Perl. Il existe un outil
bin2c_WIN qui réalise la même tâche mais sous Windows. Si l'intégration
d'images dans des librairies UNIX ne semble pas trop poser de problèmes,
celle de vidéos semble quasi impossible. J'ai cru comprendre sur un forum
que seul Windows avec ses DLL autorisait le concept d'ajouter des fichiers
ressources binaires dans des bibliothèques, cela est impossible sous BSD /
Linux sans devoir tout générer en code C au préalable. Pour les vidéos MPEG,
je n'ai tout simplement rien trouvé de tel...

Bonne journée,

Fab
Avatar
Hamiral
Fab a écrit :
Quant à l'outil bin2c, on trouve effectivement une collection de code s
sources à compiler sur le web, et même des scripts Perl. Il existe un
outil bin2c_WIN qui réalise la même tâche mais sous Windows. Si
l'intégration d'images dans des librairies UNIX ne semble pas trop po ser
de problèmes, celle de vidéos semble quasi impossible. J'ai cru
comprendre sur un forum que seul Windows avec ses DLL autorisait le
concept d'ajouter des fichiers ressources binaires dans des
bibliothèques, cela est impossible sous BSD / Linux sans devoir tout
générer en code C au préalable. Pour les vidéos MPEG, je n'ai t out
simplement rien trouvé de tel...



En fait, pourquoi veux-tu mettre tes ressources dans une bibliothèque
dynamique ? Tu pourrais aussi bien les charger depuis le disque.
Si ce que tu cherches à faire c'est d'avoir tes ressources localisées
dans un "package", que tu peux changer lors de l'exécution, alors
pourquoi ne pas simplement les gzipper de sorte que tu auras un fichier
seul contenant toutes les ressources, et utiliser la bibliothèque qui v a
bien pour les lire ?

Le fait que Windows permette de mettre des ressources dans une DLL ne
veut pas dire que c'est la meilleure méthode...

Ham
Avatar
Sylvestre Gallon
On Oct 14, 1:13 pm, Hamiral wrote:
Fab a écrit :

> Quant à l'outil bin2c, on trouve effectivement une collection de code s
> sources à compiler sur le web, et même des scripts Perl. Il existe un
> outil bin2c_WIN qui réalise la même tâche mais sous Windows. Si
> l'intégration d'images dans des librairies UNIX ne semble pas trop po ser
> de problèmes, celle de vidéos semble quasi impossible. J'ai cru
> comprendre sur un forum que seul Windows avec ses DLL autorisait le
> concept d'ajouter des fichiers ressources binaires dans des
> bibliothèques, cela est impossible sous BSD / Linux sans devoir tout
> générer en code C au préalable. Pour les vidéos MPEG, je n'ai t out
> simplement rien trouvé de tel...

En fait, pourquoi veux-tu mettre tes ressources dans une bibliothèque
dynamique ? Tu pourrais aussi bien les charger depuis le disque.
Si ce que tu cherches à faire c'est d'avoir tes ressources localisées
dans un "package", que tu peux changer lors de l'exécution, alors
pourquoi ne pas simplement les gzipper de sorte que tu auras un fichier
seul contenant toutes les ressources, et utiliser la bibliothèque qui v a
bien pour les lire ?

Le fait que Windows permette de mettre des ressources dans une DLL ne
veut pas dire que c'est la meilleure méthode...

Ham



Je plussois :)

--
Sylvestre Gallon (http://devsyl.blogspot.com)
R&D @ Rathaxes (http://www.rathaxes.org)
PMBSD Lead Developer (http://www.pmbsd.org)