Probleme ligne de commande gcc

Fermé
Div - 12 mars 2009 à 22:13
 Div - 13 mars 2009 à 16:20
Bonjour,

j'ai un soucis, j'imagine de compilation:
j'ai un fichier c++ (test.cpp par exemple), 2 headers (h1.h et h2.h) et une dll (h1.dll)
j'ai bien les #include "h1.h" dans mon fichier cpp.
lors de la compilation avec gcc, jai des erreurs du genre "undefined reference to" puis le nom de plusieurs fonctions dont les prototypes sont dans h1.h.
J'arrive à compiler test.cpp pour obtenir test.o, mais je n'arrive pas à faire la suite pour obtenir le test.exe.
Quelle serait la/les commandes avec gcc pour ça? j'ai l'impression qu'il y a un probleme de commande gcc / link...

Merci de votre aide
A voir également:

16 réponses

J'avais essayé avec -l h1.dll ou -L h1.dll dans la ligne de commande mais j'avais les "undefined reference".
j'ai aussi essayé avec un projet sous Dev-C++, lors de la compilation (cette fois sans ligne de commande mais en cliquand sur le bouton) il me ressortait les mêmes erreurs.
1
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 620
13 mars 2009 à 09:29
hello
après -L il faut un nom de répertoire contenant les librairies
avec -l library il cherche une librairie appellée liblibrary.a (sur windows, je ne sais pas)
-I dir précise un répertroire ou se trouvent les .h
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
13 mars 2009 à 11:34
Utilise : gcc ... -lh1 (L minuscule et ne spécifie pas le .dll).
1
j'ai la même réponse...
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
13 mars 2009 à 12:05
Sait-on jamais, gcc -L./ -lh1
Si ça ne marche pas, dis-nous si tu programmes sur Vista ou sur cygwin, et autre.

Cdlt
0

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

Posez votre question
la commande "gcc -L./ -lh1" me retourne un autre probleme maintenant:

C:/MinGW/bin...../libmingw32.a(main.o)(.text+0x97):main.c: undefined reference to 'WinMain@16'

il n'y a plus qu'un "undefined reference" en erreur, et ce n'est pas le même qu'avant
1
j'ai oublié:
je suis sous windows xp, j'ai voulu travailler sous eclipse + CDT +MinGW +MSYS, mais j'arrive pas à configurer correctement la compilation donc je suis allé compiler à la main dans le répertoire de mon projet
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
13 mars 2009 à 13:05
Déjà, ça serait bien que tu travailles avec g++ au lieu de gcc, ça permettrait d'éliminer toutes autres sources d'erreurs. Et retente g++ -ldll -L./ (si bien sûr ta dll est dans le répertoire courant)
Sinon que donne : g++ test.c -o test.exe h1.dll ?
Cdlt
1
la premiere me renvoie l'erreur avec WinMain
la seconde reliste tous les undefined reference
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
13 mars 2009 à 13:42
A priori, tu as dû créer un projet Win32, et tu n'as pas mis d'entrée WinMain d'où le message d'erreur.
Donc soit, tu recrées un type de projet console, soit tu dois mettre WinMain au lieu de main. Voici son prototype : int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);
Cdlt
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
12 mars 2009 à 22:42
Salut,
Tu utilises un compilateur C pour du C++. Utilise plutôt g++.
Sinon, as-tu pensé à utiliser le switch l de gcc pour linker ta dll ?
Cdlt
0
jai fait mon projet sous eclipse+CDT et je vois pas où choisir console ou windows...jai installé dev C++ car je sais qu'on peut choisir facilement en créant un projet, jai donc choisi console, mais jai les undefined reference qui reviennent
0
g++ -L./ -lh1
me retourne toujours l'erreur du WinMain, avec pourtant un projet créé en mode console
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
13 mars 2009 à 15:16
Juste pour vérifier, remplace int main(...) par int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
Et recompile avec g++ -L.\ -lh1
0
toujours le problème WinMain...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
13 mars 2009 à 16:18
Peux-tu poster ton fichier test.cpp ?
0
je suis désolé fiddy mais je ne peux pas. Je reprend un projet qui m'interdit de diffuser le code; en revanche si vous avez des demandes plus précises sur le code je pourrai toujours vérifier ou poster un bout de code.

Merci de votre aide.
0