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

Portage d'un projet Windows

6 réponses
Avatar
Patrice Goetghebeur
j'ai un projet Windows en C/C++ (Borland) que je voudrai porter sur mac.

A priori, je pense que cela est faisable car le programme ne semble pas
utiliser de fonctions cruciales de windows.

Mais le projet contient des librairies dynamiques (DLL) a compiler
séparément.
Comment porter ces librairies sous xcode? faut-il importer leur code
dans le projet ou peut-on refaire des librairies semblables avec xcode ?

les indications et conseils sont les bienvenus.
merci.

6 réponses

Avatar
Schmurtz
Patrice Goetghebeur wrote:

j'ai un projet Windows en C/C++ (Borland) que je voudrai porter sur mac.

A priori, je pense que cela est faisable car le programme ne semble pas
utiliser de fonctions cruciales de windows.


J'espère pour toiŠ

Mais le projet contient des librairies dynamiques (DLL) a compiler
séparément.
Comment porter ces librairies sous xcode? faut-il importer leur code
dans le projet ou peut-on refaire des librairies semblables avec xcode ?


Oui, tu peux, il suffit de créer un nouveau projet de type "BSD Dynamic
Library" ou "BSD static library".

Par ailleurs, je te conseille de compiler directement les bibliothèques
avec le programme lui même (sauf si tu penses en avoir besoin pour
d'autres programmes) sans créer de bibliothèque. Ça revient un peu au
même que d'utiliser une bibliothèque statique : le code de la
bibilothèque est inclu dans l'exécutable, se qui le rend plus autonome
et donc plus pratique à diffuser et à installer.

les indications et conseils sont les bienvenus.
merci.


de rien.

--
Schmurtz

Avatar
pmanet
Schmurtz wrote:

Ça revient un peu au
même que d'utiliser une bibliothèque statique : le code de la
bibilothèque est inclu dans l'exécutable, se qui le rend plus autonome
et donc plus pratique à diffuser et à installer.


c'est meme hautement recommandable... je ne comprends pas cette manie de
mettre des bib externe, ce qui est le plus sur moyen de rendre les
choses ingerables au bout de 2-3 versions...
--
Philippe Manet


Avatar
Sebosac
bonsoir
je n'ai encore jamais utilisé les blibrairie, mais il me semble que une
fois compiler pour un PC, la librairie n'est plus utilisable que sur ce
type de machine, acause du code executable quelle contienne, qui est je
vous le rapel en Intel et sur mac on travaille en RISC, et de prime
reste a sasvoir si le code st portable via les librairie.


non le mieux serai d'apres moi d'avoir sous la main les codes sources de
ces librairies et de les retouché un peu dans le codes sources et de
recompilé le tout en Mac.


et aprés seulement tu pourra compler et ainsi porter ton application sur
MacOS


un autre avis peu étre ?

je ne connais pas xCode comment il réagit, mais il fait tout cela tout
seul alors la chapeau !!


à Bientot.


manet wrote:
Schmurtz wrote:


Ça revient un peu au
même que d'utiliser une bibliothèque statique : le code de la
bibilothèque est inclu dans l'exécutable, se qui le rend plus autonome
et donc plus pratique à diffuser et à installer.



c'est meme hautement recommandable... je ne comprends pas cette manie de
mettre des bib externe, ce qui est le plus sur moyen de rendre les
choses ingerables au bout de 2-3 versions...



Avatar
Hubert Figuiere

c'est meme hautement recommandable... je ne comprends pas cette manie de
mettre des bib externe, ce qui est le plus sur moyen de rendre les
choses ingerables au bout de 2-3 versions...


Cette manie est bien. Sous UNIX on sait gérer les version de
bibliothèques contrairement à Windows. Et les Frameworks de MacOS X
aussi le supportent.
Le problème c'est que MacOS X n'a toujours pas de gestion de packages
digne de ce nom pour gérer les-dites bibliothèques correctement.


Hub
--
GPG fingerprint: 6C44 DB3E 0BF3 EAF5 B433 239A 5FEE 05E6 A56E 15A3

Avatar
Schmurtz
Sebosac wrote:

je n'ai encore jamais utilisé les blibrairie, mais il me semble que une
fois compiler pour un PC, la librairie n'est plus utilisable que sur ce
type de machine, acause du code executable quelle contienne, qui est je
vous le rapel en Intel et sur mac on travaille en RISC, et de prime
reste a sasvoir si le code st portable via les librairie.


Tu fais un petit mélange. C'est bien à cause de la compilation en
langage machine qu'un exécutable ne peut pas tourner sur processeur
Intel s'il a était compilé pour PowerPC : il faut donc absolument aussi
recompiler les bibliothèques.

Mais le RISC n'a rien avoir la dedans : la dénomination RISC (Reduce
Instruction Set C????) n'est que le nom d'une stratégie de conception du
processeur, par opposition au CISC (Complex Instruction Set), qui
consiste à limiter le nombre d'instructions afin de n'avoir que des
instructions qui effectue des opérations élémentaire. Les processeurs
Intel actuel peuvent être considérer comme des processeurs RISC (même si
il reste tout une gestion de compatibilité avec les instructions des
vieux i386, en CISC).

Le problème d'incompatibilité ne vient que du fait que le jeu
d'instructions du processeur n'est pas le même sur des PowerPC ou des
Pentium qui eux sont compatibles avec les processeurs d'AMD (parque
partageant les mêmes instructions).

non le mieux serai d'apres moi d'avoir sous la main les codes sources de
ces librairies et de les retouché un peu dans le codes sources et de
recompilé le tout en Mac.


Il *faut* avoir le code source de ces bibliothèques, ou alors une
version compilé pour mac.

--
Schmurtz

Avatar
pmanet
Hubert Figuiere wrote:

Cette manie est bien.


non

Sous UNIX on sait gérer les version de
bibliothèques contrairement à Windows.


ce n'est pas une raison ; d'abord, tu fais comme si tous les
programmeurs faisaient leur métier correctement, ce qui n'est absolument
pas garanti ; autant donc limiter la casse en inculquant des principes
robustes : pas de librairie en dehors de l'appli. Sous OSX, on a vu des
tas de machins qui allaient déposer des librairies a des endroits
variés, une fois en root, une fois chez le user, etc...

avoir une application fragmentée en 25 000 fichiers répartis dans tout
le système est une source d'ennui potentielle, et la loi de la tartine
de confiture fait que ces ennuis finissent toujours par arriver.

et comme ça n'a aucun interet tangible, il faut éviter. Objectivement,
la place disque n'est plus un problème, alors chaque dev incorpore ses
librairies dans son appli au moment où il compile et on est sur que tout
reste compatible jusqu'à la prochaine mise à jour.

--
Philippe Manet