librairies et objets standards

librairies et objets standards - C++ - Programmation

Marsh Posté le 16-12-2003 à 09:24:00    

Bonjour,
 
voila, je voulais savoir s'il etait possible de passer en paramètre d'une librairie externe des objets standards comme std::string ou std::vector (en temps que librairies je pense d'abord aux dll de windows, mais je pense que linux doit avoir son equivalent)
 
par exemple :
 

Code :
  1. //dans la librairie
  2. void func(const std::string & s)
  3. {
  4.   cout << s << endl;
  5. }
  6. // dans le programme principal
  7. void func(const std::string & );
  8. void main()
  9. {
  10.   func("choucroute garnie" );
  11. }


 
j'ai peur que si la librairie et le programme principal ne sont pas compilés avec le même compilateur l'implémentation des objets standards changent (difference d'allocateur, changement de l'ordre de déclaration des fonctions membres ...)


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 16-12-2003 à 09:24:00   

Reply

Marsh Posté le 16-12-2003 à 12:59:50    

c'est possible, mais en effet cela peut poser des problèmes de compatibilité. Notemment, il faut que ce soit exactement la même STL qui soit utilisée, sous peine de graves erreurs.
 
edit:
de plus, sous windows et dans le cas de l'utilisation de cette API via une dll, il peut en effet y avoir des problèmes d'allocation mémoire, sachant que de la mémoire allouée dans une dll doit être libérée dans la même dll (sauf avec certaines options de lonk particulières pour les librairies système). Or les strings ayant une gestion "cachée" de la mémoire, il faut bien comprendre comment marche la gestion de celle-ci avec les compteur de référence avant de s'en servir.


Message édité par SoWhatIn22 le 16-12-2003 à 13:03:11
Reply

Marsh Posté le 16-12-2003 à 13:21:05    

1) bibliothèque
2) n'oublient pasles mecs qui s'engueulent à propos de la compatibilité et qui ralentissent considérablement les changements du langage et de STL

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed