Probleme ligne de commande gcc
Div
-
Div -
Div -
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
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:
- Probleme ligne de commande gcc
- Invite de commande - Guide
- Partage de photos en ligne - Guide
- Formulaire en ligne de meta - Guide
- Commande terminal mac - Guide
- Mètre en ligne - Guide
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.
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.
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
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
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
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
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
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
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
Sinon que donne : g++ test.c -o test.exe h1.dll ?
Cdlt
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
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
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
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
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
g++ -L./ -lh1
me retourne toujours l'erreur du WinMain, avec pourtant un projet créé en mode console
me retourne toujours l'erreur du WinMain, avec pourtant un projet créé en mode console
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
Et recompile avec g++ -L.\ -lh1