IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

librairie C dans Application C++


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    60
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 60
    Par d�faut librairie C dans Application C++
    Salut Ami(e)s D�veloppeurs
    J'ai un probl�me assez myst�rieux :
    J'utilise VC++ 2010
    J'ai cr�� un fichier .lib bas� sur la librairie SISL de Sintef.
    Cette librairie est compos�e d'un tr�s grand nombre de fonctions (>=600) toutes �crites en C et ont l'air prets � etre plug�s � une grosse application en c++ (pr�sence de extern C, ....).
    J'ai pu g�n�r� un seul .lib correspondant � toutes ces fonctions.
    Pour les appeler dans mon appli j'utilise un header + le.lib au linkage.
    Le probl�me est le suivant :
    Pour une raison quelconque, certaines fonctions plantent � l'ex�cution, d'autres non.
    En d�bugant j'ai remarqu� que certains param�tres pass�s � la fonction se trouvant dans le .lib changent de valeur une fois dans le corps de cette fonction.

    Ex :
    Supposons que le prototype de la fonction dans le .lib est le suivant
    void funcStaticLib(float[], float[], float, float[]);

    Pour ex�cuter cette fonction,
    je d�clare les variables
    float tab1[3] = {0.0,1.0,0.0};
    float tab2[3] = {1.0,1.0,0.0};
    float val = 1.0;
    float res[3];

    puis j'appelle ma fonction :
    funcStaticLib(tab1, tab2, val, res);

    La fonction plante et quand je lance le debugger VC2010
    je remarque en entrant dans le corps de funcStaticLib que
    tab1 a tjrs la meme valeur
    tab2 devient un pointeur invalide
    val prend la valeur 2.37636763 E+18 p�r ex.

    Vous ete d'accord avec moi que c'est totalement incompr�hensible...comme si entre la d�claration des variables et le passage de param�tres, il s'est pass� quelque chose

    Voil� j'ep�re que je me suis fait bien comprendre.

    Toute aide sera plus que appr�ci�e.
    Merci d'avance

  2. #2
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    Citation Envoy� par nasboy3d Voir le message
    J'ai cr�� un fichier .lib bas� sur la librairie SISL de Sintef.
    Tiens, c'est amusant, j'ai boss� dessus sur dans ma mission pr�c�dente, jusqu'en juillet. Tu bosses sur quoi ?

    Citation Envoy� par nasboy3d Voir le message
    Cette librairie est compos�e d'un tr�s grand nombre de fonctions (>=600)
    Toutes avec un nom tr�s explicite, tu l'auras not�. :-)

    Citation Envoy� par nasboy3d Voir le message
    En d�bugant j'ai remarqu� que certains param�tres pass�s � la fonction se trouvant dans le .lib changent de valeur une fois dans le corps de cette fonction.
    Jette un �il sur cette page, au cas o�...

    Je ne peux pas te faire part de mon exp�rience sur cette lib, car je le client voulait du code en C#, et je me suis donc coltin� la "traduction"...

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    60
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 60
    Par d�faut
    Merci oodini.
    Quelle coincidence .....
    J'imagine �a ne doit pas etre fastoche de traduire du C en C#.
    A moins que t'as utilis� des lib C en C# .

    En fait moi je bosse sur un soft de mod�lisation 3D Nurbs utilisant principalement les capacit�s des nouveaux GPU.

    J'ai voulu utilis� cette librairie pour mon module de G�n�ration de Primitives Nurbs � la place de l'existant car je la trouve mature et �pur� de bugs (pas mal de soft l'utilisent en underground).
    Et tu l'aurais not� il est parfait pour etre plug� � une appli C++ (passage de param par pointeur, r�f�rence etc...).

    Mais mon probl�me est assez bizarre :
    Par exemple la g�n�ration Nurbs Sphere (nom de code s1023 ) fonctionne bien alors que la g�n�ration de Nurbs Cylindre (nom de code s1022) plante � l'exe.

    Sinon Es-ce qu'il y a une chance que les param�tres pass�s � une fonction soient corrompus avant d'entrer dans le corps de cette fonction ?

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    60
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 60
    Par d�faut
    �a y est je sais d'o� vient le probl�me.
    En fait c'est totalement de ma faute car j'ai du changer les variables utilis�s dans cette librarie (de double en float) pour l'adapter � mon soft existant.
    Et comment j'ai proc�d� ? Comme ceci :
    Un gros Replace de Notepad ++ sur le r�pertoire contenant toutes les fichiers.
    Je pensais pas que �a pourrait venir de l� car il n'y avait aucune ambiguit� � ces replace.
    L� j'ai build� la version originale et �a marche bien.

    Bon l� le pb est juste translat� car je ne peux pas utilis� ces fonctions tel quel.
    Il me faut la version avec des float.
    Je vais chercher ce qui cloche. Sinon si vous avez des id�es, je suis preneur...
    Merci

  5. #5
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut!,

    Je ne vois qu'une solution: veiller � caster, correctement, tes float en double avant de les filer � la biblioth�que

    Le probl�me, c'est que si les fonctions renvoyent des double, tu perdra de la pr�cision au moment de faire l'inverse: le compilateur te lancera des avertissements � tour de bras
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2010
    Messages
    60
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2010
    Messages : 60
    Par d�faut
    Le probl�me, c'est que si les fonctions renvoyent des double, tu perdra de la pr�cision au moment de faire l'inverse: le compilateur te lancera des avertissements � tour de bras
    Oui �a c'est clair...mais les fonctions ne renvoient pas des doubles dans la version que j'ai modifi�...tout est maintenant en float.
    Le gros pb est que j'ai d'�normes contraintes,

    1 - par ex quand je dois r�cup�rer un pointeur(tableau) de l'une de ces fonctions et le passer � mon renderer Opengl.
    Ce serait compl�tement in�fficace de convertir le tableau en float (surtout si �a fait un size de 1000) avant de l'utiliser.
    Les appli 3D sont tr�s sensibles.

    2 - je sais certains vont me dire opengl 4x / GLSL supporte les buffers double mais je dois garder la compatibilit� avec les Geforce G80 donc Opengl 3.3.

    Sinon, je tiens � souligner que ce forum est tr�s efficace et j'adore la mentalit� qui y r�gne.

Discussions similaires

  1. Embarquer des librairies dynamiques dans mon application
    Par antoine.roux dans le forum Biblioth�ques
    R�ponses: 2
    Dernier message: 30/05/2009, 09h24
  2. R�ponses: 3
    Dernier message: 18/09/2007, 14h54
  3. R�ponses: 2
    Dernier message: 06/04/2006, 17h44
  4. [Java-Swing][HTML] Page html � inclure dans application Java
    Par terminagroo dans le forum AWT/Swing
    R�ponses: 4
    Dernier message: 04/07/2005, 10h04
  5. [OC4J 9.0.2] plusieurs modules clients dans application.xml
    Par Mokhtar BEN MESSAOUD dans le forum Autres
    R�ponses: 2
    Dernier message: 11/02/2005, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo