Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1808 connectés 

  FORUM HardWare.fr
  Programmation

  [libs] borland/Visual C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[libs] borland/Visual C++

n°57245
koulip31
Posté le 03-09-2001 à 16:54:00  profilanswer
 

voila mon pb
 
jai une dll et le .lib corespondant  
le tout a ete copmile sous borland C++ builder
 
le hic moi chi sou VC++
quand je link le .lib a mon prog
et je compile il me dit que le fichier est illisible ou corompu
 
pour la dll je fait un:  
loadlibrary("ma_dll.dll" );
 
 
le link dans option de linkage:
ma_dll.lib  
 
il y il un truc pour corriger ca?
si oui HELPPPPPP ce'est URGENT

mood
Publicité
Posté le 03-09-2001 à 16:54:00  profilanswer
 

n°57254
youdontcar​e
Posté le 03-09-2001 à 17:16:25  profilanswer
 

soit tu linkes avec un .lib, soit tu fais un loadlibrary() et tu choppes les procs avec GetProcAddress(). mais pas les deux à la fois ... et si ton .lib foire utilise la deuxième solution.

n°57374
koulip31
Posté le 04-09-2001 à 10:05:01  profilanswer
 

oki comme mon .lib foire vais utliliser la seconde
 
 
mais comment ca marche la fonction GetProcAddress()
car dans le msdn il montre un exemple utilisant cette fonction et ca men dit pas grand chose
 
pDllGetVersion = (DLLGETVERSIONPROC)GetProcAddress(hinstDll,TEXT("DllGetVersion" ));
 
 
pDllGetVersion : variable ou stocker le nr° de vertion ou son pointeur (son pointeur serrait plus logique).
 
(DLLGETVERSIONPROC) : ????? a koi ca sert ????    
   
hinstDll : pointeur retourné par loadlibrary
 
TEXT("DllGetVersion" ) : ca je pense que  c'est pour aller chercher la vertion de la dll.  
 
 
donc moi si je veux utiliser la fonction toto qui se trouve dans ma_dll.dll je fait comment?
 
 
pointeur_toto = GetProcAddress(pointeur_ma_dll,TEXT("toto" ));
 
et apres?

n°57422
koulip31
Posté le 04-09-2001 à 12:31:58  profilanswer
 

:bounce:

n°57447
BENB
100% Lux.
Posté le 04-09-2001 à 14:13:35  profilanswer
 

Ton idee me parait difficile a realiser...
 
Qu'exportes/importes tu dans ta Dll...
 
Si le compilo n'est pas le meme n'espere pas recuperer les fonctions C++, c'est a dire celles qui ne sont pas declaree en extern 'C', STDCALL ou ce genre de chose, ainsi que les membres de classes...
 
Les compilo C++ ajoutent des decorations pour memoriser les types des parametres ou le nom de l'objet auquel appartiens la methode. Or ces decorations ne sont pas normalisees. Donc Borland et Microsoft ne peuvent pas utiliser les memes...
 
Ceci dit ton idee est valable si tu utilise le meme compilo de chaque cote.
Ou si tu utilise des interfaces C strictement, non objet
Ou si tu utilise une interface COM/DCOM/Corba donc objet...

n°57451
BENB
100% Lux.
Posté le 04-09-2001 à 14:18:25  profilanswer
 

Je me permet de te donner ce liens vers une discution interessante, et pas tres eloignee de ton propos...
http://forum.hardware.fr/sqlforum/ [...] &owntopic=

n°57468
koulip31
Posté le 04-09-2001 à 14:44:26  profilanswer
 

mci cest bien ce que je pensait mais me demmandais si je pouvais pas tapper en brut dans la dll (sens fout du compilo elle) comme mon .lib lui me chie des cakes  :o  
 
 :cry:  :cry: chi po dans la merdeuuuuuuuu  :cry:  :cry:
 
 
---
vais me suicider..... kkn aurais une rape a gruyer ?  :cry:

n°57618
BENB
100% Lux.
Posté le 05-09-2001 à 09:07:26  profilanswer
 

Si c'est cas desespere tuy peut esayer de chercher les noms decores dans la Dll avec dependency Walker, puis de les reporter dans GetProcAdress...
 
Mais le plus simple serait de compiler la Dll autrement...

n°57646
robUx4
misc coder
Posté le 05-09-2001 à 10:40:14  profilanswer
 

C clair. Les DLL c'est fait pour le C, pas le C++.
C'est là qu'on voit que Windows date un peu (système pas objet)...
 
Vivement les générations d'OS en objet !


---------------
Tout n'est pas si facile, tout ne tient qu'à un fil.
n°57649
robUx4
misc coder
Posté le 05-09-2001 à 10:42:56  profilanswer
 

Je précise quand même que sous Windows pour partager des objets il y a COM/DCOM... (qui sont en général dans des DLL)


---------------
Tout n'est pas si facile, tout ne tient qu'à un fil.
mood
Publicité
Posté le 05-09-2001 à 10:42:56  profilanswer
 

n°57752
BENB
100% Lux.
Posté le 05-09-2001 à 15:18:15  profilanswer
 

robUx4 a écrit a écrit :

Je précise quand même que sous Windows pour partager des objets il y a COM/DCOM... (qui sont en général dans des DLL)  




Et corba... qui lui n'est pas propre a Windows...
...
De plus le probleme ne viens pas de l'OS ni de la Dll, mais bien du langage, deux compilos C++ ne sont pas compatibles entre eux. Meme si il avait eu une lib statique .lib, il aurrait eu le meme probleme...

n°57991
koulip31
Posté le 06-09-2001 à 11:22:36  profilanswer
 

pourtant ct borland C++
 
donc jais une lid en C++ et une dll en C++
 
pourtant le hic visual lui nent veux pas
comment utiliser soit ma dll soit ma lib ...; je men fout je veux utiliser les fonction ki as dedans .....
 
un trucc  ca doit etre possible!!!!!
sinon ce serrait trop zarb  
2compilot sous win incompatibles entre eux :(

n°58041
seblamb
Posté le 06-09-2001 à 14:04:17  profilanswer
 

Il y a deux formats de lib dans windows. Borland fournis un utilitaire qui permet de convertir les lib microsoft en lib Borland. C'est COFF2OEM.EXE  
Je ne sais pas si ça marche dans le sens inverse.

n°58045
robUx4
misc coder
Posté le 06-09-2001 à 14:13:42  profilanswer
 

seblamb a écrit a écrit :

Il y a deux formats de lib dans windows. Borland fournis un utilitaire qui permet de convertir les lib microsoft en lib Borland. C'est COFF2OEM.EXE  
Je ne sais pas si ça marche dans le sens inverse.  




 
Non Microsoft est fermé au monde extérieur ;)


---------------
Tout n'est pas si facile, tout ne tient qu'à un fil.
n°58048
robUx4
misc coder
Posté le 06-09-2001 à 14:16:11  profilanswer
 

BENB a écrit a écrit :

 
De plus le probleme ne viens pas de l'OS ni de la Dll, mais bien du langage, deux compilos C++ ne sont pas compatibles entre eux. Meme si il avait eu une lib statique .lib, il aurrait eu le meme probleme...  




 
Nan ! Avec COM tu mets des objets dans une DLL, tu les déclares à Windows (qui va les écrire dans la base de registre) et ensuite tu peux les utiliser dans n'importe quelle appli ! C'est du code objet dans une DLL qui peut être partagé entre tous les langages qui permettent de faire du COM (c++, VB, java, etc).
 
Peut-être que Corba fait de même mais c'est bcp moins courrant sous Windows...


---------------
Tout n'est pas si facile, tout ne tient qu'à un fil.
n°58065
BENB
100% Lux.
Posté le 06-09-2001 à 14:58:24  profilanswer
 

robUx4 a écrit a écrit :

 
 
Nan ! Avec COM tu mets des objets dans une DLL, tu les déclares à Windows (qui va les écrire dans la base de registre) et ensuite tu peux les utiliser dans n'importe quelle appli ! C'est du code objet dans une DLL qui peut être partagé entre tous les langages qui permettent de faire du COM (c++, VB, java, etc).
 
Peut-être que Corba fait de même mais c'est bcp moins courrant sous Windows...  




DCOM est une copie de Corba... en qq sortes...
 
Desolee d'insiter, deux compilo C++ sont forcement incompatbile entre eux, meme si il produisent des binaires pour la meme plateforme. Si vous voulez de la compatibilite il faut passer par du C.
Apres il y a peu-etre differents formats de libs... (etonnant mais bon...)
 
Pour COM, un objet COM (ou Corba) suit les regles de nommage et d'appel de COM (ou Corba) et non du C++. Ces objets (COM) ne sont pas ecrits dans la base, c'est leur ID unique qui l'est... avec la position de la DLL sur le disque...

n°58086
seblamb
Posté le 06-09-2001 à 15:29:02  profilanswer
 

Il y a 2 formats de lib sous windows,
 
 http://www.metagraphics.com/metawi [...] faq030.htm
 
Normallement le Visual sais lire le 2 formats.

n°58095
koulip31
Posté le 06-09-2001 à 15:52:05  profilanswer
 

a pas l'air ... visual me chie un cake avec cette lib Borland ....  
 
et comme c'est une lib bloups ..... pour chopper les sources je peux tj courrir et la trouver compilé sous visual aussi je peux me toucher...
 
pfff ... saloperie vas WC++ :gun:

n°58256
robUx4
misc coder
Posté le 07-09-2001 à 11:05:17  profilanswer
 

BENB a écrit a écrit :

 
Desolee d'insiter, deux compilo C++ sont forcement incompatbile entre eux, meme si il produisent des binaires pour la meme plateforme. Si vous voulez de la compatibilite il faut passer par du C.
Apres il y a peu-etre differents formats de libs... (etonnant mais bon...)
 
Pour COM, un objet COM (ou Corba) suit les regles de nommage et d'appel de COM (ou Corba) et non du C++. Ces objets (COM) ne sont pas ecrits dans la base, c'est leur ID unique qui l'est... avec la position de la DLL sur le disque...  




 
Donc n'importe quel compilo peut générer un objet COM dans une DLL et ca sera exloitable par n'importe quel autre compilo, non ? C'est bien ce qu'il cherche à faire...


---------------
Tout n'est pas si facile, tout ne tient qu'à un fil.
n°58355
BENB
100% Lux.
Posté le 07-09-2001 à 13:28:44  profilanswer
 

robUx4 a écrit a écrit :

 
 
Donc n'importe quel compilo peut générer un objet COM dans une DLL et ca sera exloitable par n'importe quel autre compilo, non ? C'est bien ce qu'il cherche à faire...  




Je te laisse l'entiere responsabilite de tes dires...
Quand un phrase commence par n'importe....  
 
Quand a ce qu'il cherche a faire je ne pense pas que ce soit cela.
Je pense plutot qu'on lui a file une Dll, le Lib et les .h qui vont bien, et maintenent demerde toi coco (ou cocotte :D)...
Je suppose qu'il n'a donc aucun moyen de modifier cette Dll qui n'est pas COM...

n°58436
robUx4
misc coder
Posté le 07-09-2001 à 16:10:03  profilanswer
 

Bon, alors si tu veux jouer sur les mots, explique moi l'interet de ta première réponse...
 
Pour son problème s'il a les sources et qu'il veut mettre des objets dans sa DLL (du C, ca passe sans problème) alors il a la solution COM de Microsoft.
 
S'il n'a pas les sources, je pense qu'il a pas d'autre choix que d'utiliser le compilateur qui a fait le .lib/.dll. En tout cas si cette DLL file des objets, parce que si c'est du C (en tout cas un langage pas objet) il peut faire le LoadLibrary/GetProcAddress à la main. (mais à priori ca marche pas)


---------------
Tout n'est pas si facile, tout ne tient qu'à un fil.
n°58440
BENB
100% Lux.
Posté le 07-09-2001 à 16:20:51  profilanswer
 

robUx4 a écrit a écrit :

Bon, alors si tu veux jouer sur les mots, explique moi l'interet de ta première réponse...
 
Pour son problème s'il a les sources et qu'il veut mettre des objets dans sa DLL (du C, ca passe sans problème) alors il a la solution COM de Microsoft.
 
S'il n'a pas les sources, je pense qu'il a pas d'autre choix que d'utiliser le compilateur qui a fait le .lib/.dll. En tout cas si cette DLL file des objets, parce que si c'est du C (en tout cas un langage pas objet) il peut faire le LoadLibrary/GetProcAddress à la main. (mais à priori ca marche pas)  




L'interet d'une discution c'est que l'on recoit des infos au fur et a mesure... dans ma premiere reponse je ne savait pas qu'il n'avait pas les sources, mais la suite de la discution me laisse supposer qu'il n'en dispose pas...
Et on revient sur le point initial, si la Dll a ete compilee par C++ Builder comme du C++ il y a un probleme de decorations meme si ce ne sont que des fonctions C...
point final.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [libs] borland/Visual C++

 

Sujets relatifs
[VISUAL BASIC] Ma période d'essai va se terminer, je suis dans le caca[Visual Basic] Horloge Windows
[Visual C++] Avis à tous les pros de Visual C++[VISUAL BASIC] Remplir une combobox d'apres un champ access
[Visual C++] TreeCtrl, un petit blème d'affichage[Visual C++] Mettre une icône dans un menu popup, à côté du texte
[Borland C++] Lancer une commande DOS[Borland C++] SHFileOperation et Ansistring
[Visual C++] RichEdit -> Sélection au début[Visual C++] Accelerator (raccourcis)
Plus de sujets relatifs à : [libs] borland/Visual C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR