Code source, 1 erreur compilation ligne 1

Fermé
Hebrew - 24 mai 2022 à 11:40
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 25 mai 2022 à 00:55
Bonjour,
J'espère que vous allez bien,
Je dois compiler un code source C et j'ai une erreur à la ligne 1
Voici ma ligne 1:
void Bitcoin::test ( )
{
L'erreur:
error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
Je pourrai corriger par quel ligne cette erreur merci à vous pour vos réponses.
A voir également:

6 réponses

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
24 mai 2022 à 13:12
Bonjour Hebrew,

Ce code ressemble à du C++ et non pas du C.

Dal
0
Bonjour Dal,
en C il n'y a qu'une erreur alors que quand j'ai testé en C++ j'ai tout le code en erreur,
ça ne peux pas être C++,
comment je peux retiré avec une autre ligne de code l'erreur de la ligne une en C
si possible ? Stp, j'avoue je n'y connais pas grand chose en C / C++ et j'ai eu le code à compiler directement. Je n'ai pas eu plus d'infos.
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 24 mai 2022 à 15:00
Il est aussi possible que le compilateur C s'arrête à cette erreur de syntaxe et ne poursuive pas son analyse, considérant qu'il ne sait pas quoi faire du tout à la suite (ce qui ne voudra pas dire que cela sera la seule "erreur" dans le code pour le compilateur C...)

Bref, en admettant que le seul problème dans le code que tu présumes être en C soit le code concernant cette ligne
void Bitcoin::test ( )
, sans voir en quoi consiste le code que tu tentes de compiler, tu pourrais commencer en commentant le code de façon à ce qu'il soit ignoré par le compilateur.

Pour cela, place
/*
avant la ligne en question et
*/
après la ligne contenant l'accolade fermante de ce Bitcoin::test()

Quelque chose comme ceci :

/* 
------ début du code commenté  ------ 
void Bitcoin::test ( )
{
(... une ou plusieurs lignes de code ici ...)
}
------ fin du code commenté  ------ 
*/
 


Cependant, il y a des chances que cela ne donne rien de bon.

void Bitcoin::test ( )
ressemble à l'implémentation d'une méthode "test" dans une classe "Bitcoin" en C++ ("Bitcoin" serait alors le nom de la classe et le nom de la méthode implémentée "test" que tu peux voir séparée par
::
). Cette syntaxe
identifiant::autre_identifiant
est interdite en C. Ce genre de code en C++ signifie qu'ailleurs dans ce même fichier ou dans un entête .h correspondant à ce fichier, ou .hh ou .hpp se trouve une définition de la classe Bitcoin avec un code du genre
class Bicoin { }
(comprenant entre les accolades les différentes lignes définissant l'objet, y compris la mention de la méthode "test").

L'hypothèse selon laquelle un programmeur C aurait mis une syntaxe de ce type dans un code C par accident est peu probable. Une autre hypothèse est que tu aies un code C++ et que les erreurs de compilation avec un compilateur C++ viennent juste du fait que tu ne le compiles pas correctement.

Sans avoir accès au code ou comprendre mieux le contexte de ce que tu fais, il est difficile de t'aider plus.
  • ton code vient d'où ?
  • son contenu est confidentiel ou tu peux le poster ici, au moins en partie (le contenu entre les accolades de
    void Bitcoin::test
    et éventuellement quelques lignes avant et après montrant en quoi consiste le reste et s'il semble du même genre ?
  • quel est le compilateur et la ligne de commande de compilation, ou le fichier Makefile ou autre, que tu utilises pour tenter de compiler ?
0
Oui je partage un bout du code Dal,
Voilà une partie du code que je veux compiler:
void Bitcoin::test ( )
{
const QByteArray t1 ( QByteArray::fromHex ( "" ) ); // strip
const QByteArray t2 ( QByteArray::fromHex ( "" ) ); // strip
Stream stream1 ( t1 );
Stream stream2 ( t2 );
const Transaction tx1 ( stream1 );
const Transaction tx2 ( stream2 );
_trace ( QString ( "txid1=%1" ).arg ( tx1.getKey ( ).toString ( ) ) );
_trace ( QString ( "txid2=%1" ).arg ( tx2.getKey ( ).toString ( ) ) );
const TxInput in1 ( tx1.getInput ( 0 ) );
const TxInput in2 ( tx2.getInput ( 0 ) );
const QByteArray script1 ( in1.getScript ( ) );
const QByteArray script2 ( in2.getScript ( ) );
EvalScript escr1 ( script1 );
EvalScript escr2 ( script2 );
xassert ( escr1.evalInput ( ) == EVAL_I_SIG_PUB );
xassert ( escr2.evalInput ( ) == EVAL_I_SIG_PUB );
_trace ( QString ( "pub1=%1" ).arg ( escr1.getInPubKey ( ).toHex ( ).constData ( ) ) );
_trace ( QString ( "pub2=%1" ).arg ( escr2.getInPubKey ( ).toHex ( ).constData ( ) ) );
xassert ( escr1.getInPubKey ( ) == escr2.getInPubKey ( ) ); // same pubkeys?
const MyByteArray sig1 ( escr1.getInSignature ( ) );
const MyByteArray sig2 ( escr2.getInSignature ( ) );
char buf [64];
Je voudrais compiler ce code, je ne sais également pas le language ? Merci de m'indiquer toutes pistes pouvant être concluante s'il faut je peux te donner le code en message privé pour plus de précision ?
0
J'ai installé la bibliothèque Qt Creator 5.2.1 qui correspond a la version du code année 2016
C'est de la Bibliothèque Qt mais je n'arrive toujours pas à compiler,
je ne sais plus trop comment faire si une explication est possible sa serait sympa,
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'ai réussis à compiler mais je seche à cette partie 2 dll introuvable sur le web je m'explique:
J'ai trouvé 2 dll sur 4
mais 2 dll manquante dites:
qt5quickd.dll
ainsi que
qt5qmld.dll
Que je ne trouve pas du tout sur le web , je ne comprends pas, les 4 erreurs de dll sont passés à 2 erreurs et le programme ne s'ouvre pas
car j'ai trouvé uniquement: qt5quick.dll ( et pas qt5quickd.dll )
et l'autre erreur dll manquante est: qt5qmld.dll que je ne trouve pas non plus j'ai trouvé qu'une dll du nom de qt5qml.dll ne fonctionnant pas.
Une idée pour ce dernier problème? je pense qu'ensuite l'outil s'ouvrira vu que les dll je les aurais mais ou les avoir je ne sais pas, si une idée je suis preneur merci
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
24 mai 2022 à 21:31
OK, donc c'est bien du C++ (et Qt est une bibliothèque C++).

Je ne fais que très rarement du C++ et je n'ai utilisé Qt qu'il y a longtemps pour le tester, alors je déplace le topic sur le forum C++ au cas où quelqu'un de plus connaisseur pourrait t'aider.

Tu dis que tu es parvenu à compiler avec Qt Creator qui a donc produit un exécutable, mais que cet exécutable a besoin de .dll Qt pour se lancer.

Si tu es parvenu à compiler avec Qt Creator dans la version que tu indiques, il est très probable que tu disposes sur ton ordinateur même des .dll en question (ne vas pas les chercher sur le Web sur des sites douteux). Vois dans le répertoire d'installation de Qt.

Ce lien du wiki Qt te sera sûrement utile :

https://wiki.qt.io/Deploying_a_Windows_Application_Using_Shared_Libraries

et sinon, tu as un forum Qt aussi : https://forum.qt.io/category/14/installation-and-deployment
0
Oui mais je ne sais toujours pas le compiler correctement le programme ne s'ouvre pas, si une personne qui connais Qt Creator veux bien me le compiler ça serait sympa, j'ai bataillé toutes la journée mais ce n'est pas du tout évident, si quelqu'un se propose je le remercie, sinon Dal merci pour avoir essayé de m'aider.
Je précise que ce code est de 2016 donc je l'ai établie sur Qt Créator 5.2.1 ( version Qt en 2016 ) malgré des heures de tentative je n'y arrive pas.
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 25 mai 2022 à 00:59
Salut Hebrew,

Tu disais que tu avais pu compiler le source et obtenir un exécutable. Donc tu as pu "compiler correctement".

Ton problème est, selon ma compréhension, qu'au lancement de l'exécutable généré par la compilation, cet exécutable a besoin de fichiers .dll de la bibliothèque Qt.

Note que, normalement, tu devrais être capable de lancer l'exécutable à partir de l'environnement de développement Qt où tu as compilé le source, car lorsque tu lances à partir de Qt Creator, celui-ci sait où se trouvent ces .dll. La réalisation de copies des .dll n'est normalement nécessaire que lorsque tu veux lancer l''exécutable en dehors de l'environnement de développement Qt (c'est ce que le lien que j'ai posté ci-dessus appelle le "déploiement" de l'application). Selon ces instructions, les .dll doivent être placées, pour certains, dans le même répertoire que l'exécutable et pour d'autres dans des sous-répertoires de celui-ci avec des noms précis sous le répertoire où se trouve l'exécutable.

En plus du lien que j'ai déjà posté sur le Wiki de Qt, tu as celui-ci en français avec des captures d'écrans qui devrait être plus parlant pour toi pour t'aider à trouver les .dll dans ta propre installation de Qt.

https://wiki.qt.io/Deploy_an_Application_on_Windows/fr

Note que cette page wiki de Qt en français est la copie de celle-ci https://wiki.qt.io/Deploy_an_Application_on_Windows qui diffère légèrement et que celle-ci indique qu'il existe un utilitaire "windeployqt" fourni avec Qt dans le répertoire d'installation de Qt (QTDIR/bin/windeployqt), qui est un outil de ligne de commande sensé faciliter la création d'un répertoire contenant toutes les dépendances nécessaires à l'exécution.

La documentation de cet outil est là : https://doc.qt.io/Qt-5/windows-deployment.html

Prend le temps de lire ces différents liens.
0