Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Aide en C \Problème


XmichouX

Messages recommandés

Quel est le message d'erreur (exact !) fourni par les machines sur lesquelles l'application ne fonctionne pas ?

Les exécutables sont linkés avec quelles dll ? msvcrt-chaipukoi.dll ?

Ce runtime Visual C++ ne serait-il pas, par le plus grand des hasard, absent des machines sur lesquelles le programme ne fonctione pas ?

Lien vers le commentaire
Partager sur d’autres sites

Salut Kewlcat,

 

Voilà un screen d'un message d'erreur chez un gars à qui j'ai demandé de tester (qui n'a pas de compilateur sur son pc):

 

diapositive153.jpg

 

Pour tes autres questions, je dois t'avouer que je n'en ai aucune idée. Je suis vraiment novice, et donc je n'ai aucune idée avec quelles dll sont linké les exécutables, mais si tu me dis où on peut le voir, pas de problème :P

 

Pour le runtime, je ne sais même pas exactement ce que c'est, j'ai regardé une définition, mais ce que j'ai cru comprendre, c'est que c'était pour éviter la compilation, j'ai du ne rien comprendre :P

 

merci :P

Lien vers le commentaire
Partager sur d’autres sites

Arf, la seule solution est donc de changer de compilateur ? :P

D'ailleurs pour y revenir, quand j'ai essayé de mettre les fonctions en void, ça n'a pas marché.

Modifié par XmichouX
Lien vers le commentaire
Partager sur d’autres sites

Pour le runtime, je ne sais même pas exactement ce que c'est, j'ai regardé une définition, mais ce que j'ai cru comprendre, c'est que c'était pour éviter la compilation, j'ai du ne rien comprendre
Pas exactement, non... Le "runtime" c'est la (ou les) librairie(s) de fonctions sur lesquelles s'appuient les exécutables compilés avec Visual C++, donc c'est un peu indispensable au fonctionnement de ce qu'on compile et qu'on distribue.

Pour en revenir au message, c'est assez étrange car on dirait que tu as fourni uniquement l'exécutable sans aucun des autres fichiers nécessaires au bon fonctionnement de ton appli (les "ressources", le fichier de "manifeste", ce genre de choses).

Quelles sont tes options de compilation ? Quelle est la "cible" sélectionnée pour la compilation ?

 

Concernant le source en lui-même.... "Ouh la la !"

Je n'ai pas trop creusé, mais j'ai remarqué beaucoup de choses qui me déplaisent :

- pourquoi les prototypes de tes fonctions sont à la fin de ton fichier et pas dans ton .h ?

- pourquoi y a-t-il autant de code qui se répète d'une fonction à l'autre ou à l'intérieur d'une même fonction ?

- pourquoi as-tu utilisé des macros (les #define) pour ... définir des fonctions !?

- pourquoi tes fonctions n'ont pas des noms qui désignent ce qu'elles font ? ("mince, faut utiliser fonction5 ou fonction6 ?")

- pourquoi déclares-tu tes fonctions comme retournant des choses qu'elles ne retournent pas ?

...

Pour rappel, les #define servent à définir des macros, c'est à dire des bouts de code qui seront remplacés par le précompilateur (donc avant la compilation) pour générer le fichier .c final qui sera compilé. Si tu utilises des macros au lieu de fonctions, ton code sera dupliqué autant de fois que tu utilises ta macro, c'est à dire que tu feras un beau gaspillage...

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Merci d'avoir répondu.

 

Si les runtime ne sont pas directement liés à un compilateur, où se trouvent-ils ? Dans un répertoire windows ?

 

Pour en revenir au message, c'est assez étrange car on dirait que tu as fourni uniquement l'exécutable sans aucun des autres fichiers nécessaires au bon fonctionnement de ton appli (les "ressources", le fichier de "manifeste", ce genre de choses).

Euh .. oui, je l'ai envoyé sur d'autres pcs où ça a marché (sans compilateur pré-installé). Que devrais-je envoyer avec et surtout comment le mettre dans un exe ?

 

Options de compilations, j'ai fait en debug et en release, je ne sais pas si c'est ça ce que tu voulais savoir. et je n'ai aucune idée de la différence entre les deux, à part le fait que celui fait en release est bien moins lourd que l'autre.

 

Les prototypes de mes fonctions sont bien dans le fichier H :P

J'ai mis // fichier d'en tête au dessus pour l'indiquer.

 

Pour le code à l'intérieur des fonctions, je ne vois pas trop ce que tu veux dire, à chaque fois les calculs sont différents donc ..

 

Je ne comprends pas ce que tu veux dire par :

- pourquoi as-tu utilisé des macros (les #define) pour ... définir des fonctions !?

 

Les fonctions n'ont pas le nom de ce qu'elles font, car il y a plusieurs opérations à l'intérieur de ces fonctions, donc j'ai préféré mettre des bêtes chiffres comme ça :P

 

Pour les long des fonctions, igor me l'a en effet dit au début, j'ai essayé de mettre en void, mais là ça ne marchait plus ! (peut-être ai-je fait une erreur quelque part)

 

Sinon pour les macro, ça fait du gaspillage ouais, mais leur but c'est bien de faire gagner du temps dans l'écriture du code non ?

Je veux dire, n'importe quel define ne principe fait du gaspillage non ?

 

Merci de répondre :P

Lien vers le commentaire
Partager sur d’autres sites

Si les runtime ne sont pas directement liés à un compilateur, où se trouvent-ils ? Dans un répertoire windows ?
Chez moi j\'ai msvcrt.dll, msvcrt20.dll et msvcrt40.dll dans c:\\windows\\system32

Tout dépend de ta version de Visual C++, mais a priori tu dois en avoir quelques autres (msvcrt70.dll ? msvcr80.dll ?) qui ont été installées (et regsvr32-isées) lors de l\'installation de Visual C++ / Visual Studio

 

Euh .. oui, je l\'ai envoyé sur d\'autres pcs où ça a marché (sans compilateur pré-installé). Que devrais-je envoyer avec et surtout comment le mettre dans un exe ?
N\'ayant pas ma boule de cristal avec moi, tout ce que je peux t\'indiquer comme moyen de le faire, c\'est d\'essayer de générer un .msi (pour \"installer\" ton application) et de regarder ce qu\'il contient...

 

Options de compilations, j\'ai fait en debug et en release, je ne sais pas si c\'est ça ce que tu voulais savoir. et je n\'ai aucune idée de la différence entre les deux, à part le fait que celui fait en release est bien moins lourd que l\'autre.
En débug il y a tous les symboles de débug dans l\'exécutable et tout ce qu\'il faut pour tracer l\'exécution, les noms des fonctions, des variables et tout et tout... C\'est forcément plus lourd ;-)

 

Les prototypes de mes fonctions sont bien dans le fichier H ;)

J\'ai mis // fichier d\'en tête au dessus pour l\'indiquer.

Wooops... J\'avais pas fait attention, désolé...

 

Sinon pour les macro, ça fait du gaspillage ouais, mais leur but c\'est bien de faire gagner du temps dans l\'écriture du code non ?

Je veux dire, n\'importe quel define ne principe fait du gaspillage non ?

La macro n\'est, en général, utilisée que pour remplacer des morceaux de code qui se répètent mais qui n\'ont aucun intérêt à être dans une fonction (parce que, par exemple, sans macro tu aurais tout tapé de toute façon... ou bien parce qu\'un appel à une fonction à cet endroit-là plombe les performances...), alors qu\'une fonction sert à déporter des traitements qui sont exécutés souvent. Le gros souci des macros, c\'est qu\'à la compilation tout est remplacé et compilé autant de fois que ça figure dans le code, donc si c\'est un bout de fonction avec, en dur, des chaînes de caractères (!!), tu vas embarquer dans ton exécutable autant de fois la chaîne de caractères que tu auras utilisé la macro... Tu vois le souci ?

 

Pour les noms des fonctions tu aurais pu mettre, par exemple :

fonction2 : foisDouzeMoinsSix
fonction3 : cinqDemiLong
fonction4 : foisDixMoins225
fonction5 : cinqTiers
fonction6 : cinqDemiDouble

Lien vers le commentaire
Partager sur d’autres sites

Si ça vient de la dépendance à une dll (pas sûr...), dans tes propriétés de projet rends-toi dans "C/C++" >"Génération de code"> dans le volet droit, cliques sur "Bibliothèque runtime" et choisis "Multithread (/MT)"...pour voir

 

ps : KewlCat, désactive magic_quotes_gpc dans php.ini ça évitera les slashs :P

Modifié par Grenouille
Lien vers le commentaire
Partager sur d’autres sites

Re:)

 

Chez moi j\'ai msvcrt.dll, msvcrt20.dll et msvcrt40.dll dans c:\\windows\\system32

Tout dépend de ta version de Visual C++, mais a priori tu dois en avoir quelques autres (msvcrt70.dll ? msvcr80.dll ?) qui ont été installées (et regsvr32-isées) lors de l\'installation de Visual C++ / Visual Studio

Okay :P

Mais si tu dis que les users ne possèdent sûrement pas le même runtime que exigé dans mon exe, cela veut donc dire qu'il y en a déjà à la base, ou je me trompe ? :P

 

N\'ayant pas ma boule de cristal avec moi, tout ce que je peux t\'indiquer comme moyen de le faire, c\'est d\'essayer de générer un .msi (pour \"installer\" ton application) et de regarder ce qu\'il contient...

Que veux-tu dire ? Télécharger un installeur ? (pour faire de mon exe une application qui s'installe?)

--> Pourtant on télécharge bien des exe qui sont juste des exécutables non ?

 

En débug il y a tous les symboles de débug dans l\'exécutable et tout ce qu\'il faut pour tracer l\'exécution, les noms des fonctions, des variables et tout et tout... C\'est forcément plus lourd :P

Le relase a donc des désavantages ? Concrètement, lesquels ? :P

 

Pour la macro, tu veux dire qu'il faut l'utiliser que quand il y en a vraiment besoin ? Cependant je ne vois pas trop dans quel cas il y en aurait vraiment vraiment besoin ..

 

Merci pour tes réponses :P

 

Si ça vient de la dépendance à une dll (pas sûr...), dans tes propriétés de projet rends-toi dans "C/C++" >"Génération de code"> dans le volet droit, cliques sur "Bibliothèque runtime" et choisis "Multithread (/MT)"...pour voir

Bien, je l'ai fait, j'essaierai plus tard quand j'aurais du monde pour tester et je te dis :P

Dll de linkage ..?

 

Merci !

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...